Нельзя использовать цикл postscript в операторе объявления.Предполагается, что переменная $sum
должна увеличиваться в каждом цикле, что не может быть в той же инструкции, в которой она объявлена.Сначала вы должны объявить его, а затем присвоить ему с помощью цикла postscript:
my $sum;
$sum += $_ for @a;
Вы можете рассмотреть возможность использования List :: Util для этого и пропустить временную переменную @a
.И перемещая say
внутри цикла while:
use List::Util qw(sum);
say "Enter a functionality:";
while (<>) {
if (/add/) {
say "Enter your numbers:";
say "Sum: ", sum(<>);
}
say "Enter a functionality:";
}
Но это немного неуклюже.Почему бы и нет:
while (<>) {
if (/add/) {
say "Enter your numbers, separated by space: ";
say "Sum: ", sum(split " ", <>);
}
}
Таким образом, вам не нужно нажимать Ctrl-Z (Ctrl-D), чтобы остановить ввод.