У меня есть хэш массивов. Я пытаюсь сделать следующее: когда я перебираю ключи хеша, я хотел бы передать значение хэша (в данном случае массива) в подпрограмму.Как передать значение хеша массивов в подпрограмму?
Как только я буду в подпрограмме, я хотел бы сделать кучу вычислений с массивом, включая среднее значение числовых значений в массиве. Наконец, верните значение, основанное на вычислениях.
Вот минимальное представление о том, что у меня есть:
#!/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'
в подпрограмму.
Я думаю, что для моих целей это может быть немного более эффективным, чем передача ссылки на хэш массивов в каждую подпрограмму. Ребята, что вы думаете? В любом случае, можете ли вы, ребята, помочь мне понять это? Любые предложения приветствуются. спасибо
ах хорошо. Если я хочу передать '@ array' в подпрограмму' mean', будет ли она быть: 'mean (\ @ array)'? Наконец, мне нужно внести какие-либо изменения в подпрограмму 'mean'? – cooldood3490
'mean (\ @ array)' отлично, но вы должны, вероятно, еще раз взглянуть на 'mean' - что-то напуганное происходит там. – Jared
ладно, я понимаю сейчас. благодаря – cooldood3490