Несколько предложений по вашему коду.
Вы должны проверить, открыли ли вы пустой файл, и предпринять соответствующие действия:
chomp(my @ls = <$fhd>);
die "No data in file $dfile\n" unless @ls;
Вы можете использовать списки для упрощения следующей строки:
my ($gt, $gn, $gp) = @ls;
Вы можете использовать интерполяцию строк для упрощения вашей строки print()
:
print "Game '$gn' was started $gt with $gp players.\nthese were the scores:\n";
Цикл foreach
обычно гораздо проще понять, чем цикл for
в стиле C.
foreach (3 .. $#ls) {
print $ls[$_];
}
Вы можете упростить это еще больше, перебирая элементы массива, а не индексы массива.
foreach (@ls[3 .. $#ls]) {
print $_;
}
Или, возможно, переписать его, используя постфиксную версию цикла.
print foreach @ls[3 .. $#ls];
И, наконец, если вы хотите выйти из программы в совершенно нормальных условиях, тогда используйте exit
вместо die
.
Первое из этих предложений решит вашу проблему.