Использование Data::Dumper
и List::Util
Я могу суммировать общее количество каждой строки в моем массиве с помощью подпрограммы. Эта часть верна.Подпрограмма подпрограммы Perl
С более легким подходом я попытался напечатать общее количество всех номеров с помощью отдельной подпрограммы, которая называется get_grandtotal
. Это возвращает неправильные номера.
Мой вопрос: как напечатать правильную сумму?
И какие модификации я буду использовать для печати общей суммы столбца (вместо общей суммы), используя аналогичную структуру в get_row(@values)
.
#!/usr/bin/perl
use 5.10.1;
use warnings;
use strict;
use List::Util qw(sum);
use Data::Dumper;
my @values = (
[ 6, 5, 13 ],
[ 35, 9, 6 ],
[ 65, 255, 54 ]
);
get_row(@values);
sub get_row {
my @total;
foreach my $row (@_) {
say join ' ', @$row;
push @total, sum @$row;
}
say Data::Dumper->Dump([ \@total ], [ qw(*Row_Total) ]);
}
my $sum = 0;
sub get_grandtotal() {
foreach (@values) {
$sum += $_;
}
print "Grand Total = $sum\n";
}
get_grandtotal();
Выход
6 5 13
35 9 6
65 255 54
@Row_Total = (
'24',
'50',
'374'
);
Grand Total = 61899232
некоторые заметки в стиле: вы объявляете get_grandtotal с прототипом; это мало используется и может ввести в заблуждение, так что нет. Однако передайте @values для get_grandtotal и loop over @_. – ysth
тривиально, '$ sum = sum map @ $ _, @ values' – ysth