哈希的哈希哈希

时间:2012-11-23 09:29:38

标签: perl hash-of-hashes

我有一个包含

等行列表的文件

在12345处将值1注入'signal_A' 在12345处将值0注入'signal_B'
在12346处将值1注入'signal_A' 在12348处将值1注入'signal_A' 在12350处将值0注入'signal_A' 在12354处将值0注入'signal_A'

从这个文件中,我想读到文件的末尾,我想构建哈希的散列,如

%tab = (
       12345 => {           
       signal => "signal_A",           
       value  => "1",        
     },

      12345 => {
       signal => "signal_B",
       value  => "1",
     },
);

我也想迭代这个哈希表。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您有两个具有相同键的元素。那个数据结构不可能存在。相反如下:

%tab = (
   12345 => [
      {
         signal => "signal_A",           
         value  => "1",        
      },

      {
         signal => "signal_B",
         value  => "1",
      },
   ],
   12346 => [
      {
         signal => "signal_A",           
         value  => "1",        
      },
   ],
   ...
);

您将使用以下内容创建

push @{ $tab{$id} }, { signal => $signal, value => $value };

您可以使用

迭代结构
for my $id (keys %tab) {
   for $event (@{ $tab{$id} }) {
      ...$event->{signal}...;
      ...$event->{value}...;
   }
}