arrays - 将2个数组放入perl中的散列中

标签 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. 

我还只包含了打印语句来检查和显示它如何不起作用,我不打算在我的实际项目中使用它们。

最佳答案

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

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

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

关于arrays - 将2个数组放入perl中的散列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27261243/

相关文章:

javascript - 多次运行 sha512 哈希函数的好处

ruby - 有没有一种快速简便的方法可以从 Ruby 的基本数据结构创建校验和?

Perl 脚本查找 Unix 上所有无主文件和目录 - 如何进一步优化?

linux - 获取使用 Net::SSH::Expect 的 exec 执行的命令的退出状态

javascript - 如何使浏览器后退按钮忽略主题标签?

arrays - 如何在 Perl 中使用数组作为内置函数(sprintf、join 等)的参数?

arrays - MongoDB - 计算嵌套数组的平均值

mysql:检查数据库表中是否存在数组的值

javascript - 如何使用 keyup 处的 eventListener 输入值来过滤 JSON 数组

xml - 我如何在 Perl 中解析 JSON?