Я предлагаю использовать подпрограмму, чтобы вынуть кусок кода из цикла
sub fib {
my $n = shift();
my @fib = (1, 1);
push @fib, $fib[-1] + $fib[-2] while @fib < $n;
@fib[0 .. $n-1];
}
for my $n (1 .. 5) {
printf "%d = %s\n", $n, join ', ', fib $n;
}
Вам нужно пересчитать ряд Фибоначчи для каждого значения в файле? Если нет, просто переместите объявление массива @fib
за пределы подпрограммы, и данные не нужно будет пересчитывать.
Извините, я не ответил на вопрос! Чтобы распечатать только последнее значение в последовательности, измените предел цикла в вашем коде на $n-2
и переместите строку print "$a\n";
вне цикла, чтобы заменить строку print "\n";