我有一个数组哈希。我正在尝试执行以下操作:当我循环遍历散列的键时,我想将散列的值(在本例中为数组)传递到子例程中。
一旦我进入子程序,我想对数组进行一堆计算,包括取数组中数值的平均值。最后根据计算返回一个值。
这是我所拥有的最小表示:
#!/usr/bin/perl
use warnings; use strict;
use List::Util qw(sum);
%data_set = (
'node1' => ['1', '4', '5', '2'],
'node2' => ['3', '2', '4', '12'],
'node3' => ['5', '2', '3', '6'],
);
foreach my $key ( keys %data_set ) {
foreach ( @{$data_set{$key}} ) {
my @array = split; # it's not letting me
calculate(\@array); ### I'm getting the error here!!
}
}
sub calculate{
my @array = @{$_};
my $average = mean(\@array);
# do some more calculations
return; # return something
}
# sum returns the summation of all elements in the array
# dividing by @_ (which in scalar content gives the # of elements) returns
# the average
sub mean{
return sum(@_)/@_;
}
快速澄清:在第一次迭代node1
中,我想将数组传递给'1', '4', '5', '2'
子例程。
我认为就我的目的而言,这可能比将数组哈希的引用传递给每个子例程更有效。你们有什么感想?无论如何,你们能帮我解决这个问题吗?任何建议表示赞赏。谢谢