配列のハッシュがあります。私は次のことをしようとしています: ハッシュのキーをループしているので、ハッシュの値 (この場合は配列) をサブルーチンに渡したいと思います。
サブルーチンに入ったら、配列内の数値の平均を取るなど、配列を使って一連の計算を行いたいと思います。最後に、計算に基づいて値を返します。
ここに私が持っているものの最小限の表現があります:
#!/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'
私の目的では、これは配列のハッシュへの参照を各サブルーチンに渡すよりも少し効率的かもしれないと思います。皆さんはどう思いますか?いずれにしても、これを理解するのを手伝ってもらえますか? 任意の提案をいただければ幸いです。ありがとう