将2个数组放入perl中的哈希值

时间:2014-12-02 23:53:03

标签: arrays perl hash

我正在尝试将两个数组合并为一个哈希,其中一个是键,一个是值。我研究了这个,并找到了多种方法,但它们没有正确实现。我的两个数组都有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. 

我还只包括打印报表来检查和显示它是如何工作的,我不打算在我的实际项目中使用它们。

1 个答案:

答案 0 :(得分:2)

@not_split_source_ips是否包含348个不同的值,或348个可能重复的值?

如果可能存在重复(这意味着您实际上正在查找到该地址的数据包长度的总和),您可能需要这样的内容:

my %hash;
%hash{$not_split_source_ips[$_]} += $source_lengths[$_] for 0 .. $#not_split_source_ips;