我将两个不同的数组映射到一个哈希,由于某种原因,它似乎是在哈希中添加了一个额外的元素。我在数组@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'
};
答案 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];
}