附加元素被映射到散列

时间:2014-04-08 12:16:12

标签: arrays perl hash

我将两个不同的数组映射到一个哈希,由于某种原因,它似乎是在哈希中添加了一个额外的元素。我在数组@pids和数组@time中有5个元素,我将它们映射到哈希%匹配,它给了我第6个元素。关于如何解决这个问题的任何想法?

感谢。

print Dumper \@pids;
print Dumper \@time;
my %match = map { $_ => @time } @pids;
print Dumper \%match;

@pids:

$VAR1 = [
          '4690',
          '4692',
          '4693',
          '4696',
          '5320'
        ];

@time:

$VAR1 = [
          '23:59',
          '23:59',
          '23:59',
          '23:59',
          '23:59'
        ];

%匹配:

$VAR1 = {
          '4696' => '23:59',
          '4693' => '23:59',
          '4690' => '23:59',
          '4692' => '23:59',
          '23:59' => '23:59',
          '5320' => '23:59'
        };

2 个答案:

答案 0 :(得分:3)

对于@pids的每个元素,您要分配整个数组@time,正确的语法是:

my %match = map { $pids[$_] => $time[$_] } (0..@pids);

但是,你最好使用它:

my %match;
@match{@pids} = @time;

答案 1 :(得分:2)

' $ _ => @ time',这是问题所在。 它的工作原理如下:

   foreach my $key (@pids)
   {
        $map{$key} = $time[0];
        $map{$time[1]} = $time[2];
        $map{$time[3]} = $time[4];
   }
相关问题