我正在尝试将两个数组合并为一个哈希,其中一个是键,一个是值。我研究了这个,并找到了多种方法,但它们没有正确实现。我的两个数组都有348个值,但是当我组合它们时,哈希只包含9个键值对。我无法弄清楚为什么这不起作用。
my %hash;
@hash{@not_split_source_ips} = @source_lengths;
my $counter = @not_split_source_ips;
my $counter2 = @source_lengths;
print "$counter\n";
print "$counter2\n";
my $count = keys %hash;
print scalar(keys %hash);
$counter
和$counter2
都打印出348
,就像它们应该的那样,但是$count
只打印出9个。我尝试使用List::MoreUtils qw( zip );
但是得到了同样的结果结果。
当输出9行时,它们来自文件的随机部分,甚至不是开头。
@not_split_source_ips contains value like: 192.168.1.1.80
@source_lengths contains packet lengths: 0, 108, etc.
我还只包括打印报表来检查和显示它是如何工作的,我不打算在我的实际项目中使用它们。
答案 0 :(得分:2)
@not_split_source_ips是否包含348个不同的值,或348个可能重复的值?
如果可能存在重复(这意味着您实际上正在查找到该地址的数据包长度的总和),您可能需要这样的内容:
my %hash;
%hash{$not_split_source_ips[$_]} += $source_lengths[$_] for 0 .. $#not_split_source_ips;