Я только начал изучать Perl и присоединился к проекту Euler, чтобы попрактиковаться в программировании.Это первое упражнение, которое я сделал.Задача состояла в следующем: «Если мы перечислим все натуральные числа ниже 10, которые кратны 3 или 5, мы получим 3, 5, 6 и 9. Сумма этих мультипликаторов равна 23. Найдите сумму всех кратных 3 или5 ниже 1000 ".Мое решение:
use strict;
use warnings;
my @numbers = (1..1000);
my $counter = 0;
my @all_array = ();
my $total = 0;
foreach $counter (@numbers) {
if (($numbers[$counter] % 3 == 0) or ($numbers[$counter] % 5 == 0)) {
push (@all_array, $numbers[$counter]);
}
}
pop (@all_array); #after that the last digit is still in place
pop (@all_array); # only now the number 1000 is removed
my $tot = eval join '+', @all_array; #returns correct value
print $tot;
Последний элемент массива - 1000. Кажется, что за ним следует пробел, поэтому, чтобы удалить число и получить правильный результат, я должен дважды использовать функцию pop.Использование локального $ "= '' ничего не меняет. Кроме того, я получаю сообщение: Использование неинициализированного значения в @numbers в модуле (%) в строке C: \ Users \ Greg \ Documents \ perl \ unt.pl 10. Что я делаю не так и как это исправить?