Для однострочника Perl это в основном то же самое, что и решение awk
в Ответ Аймана Хури :
% perl -nle '$sum += $_ } END { print $sum'
Если вам интересно, что делают однострочники Perl, вы можете их отменить:
% perl -MO=Deparse -nle '$sum += $_ } END { print $sum'
В результате получается более подробная версия программы в форме, которую никто никогда не написал бы самостоятельно:
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
$sum += $_;
}
sub END {
print $sum;
}
-e syntax OK
Только для хихиканья, я попробовал это с файлом, содержащим 1 000 000 чисел (в диапазоне 0 - 9 999). На моем Mac Pro он возвращается практически мгновенно. Это очень плохо, потому что я надеялся, что использование mmap
будет очень быстрым, но это в то же время:
use 5.010;
use File::Map qw(map_file);
map_file my $map, $ARGV[0];
$sum += $1 while $map =~ m/(\d+)/g;
say $sum;