Ошибки в вашем коде:
open(FILEHANDLE, data.txt);
data.txt должен быть заключен в кавычки.Вы не проверяете возвращаемое значение открытия, например ... or die $!
.Вы должны использовать лексический дескриптор файла и открыть три аргумента, например, open my $fh, '<', "data.txt" or die $!
.
shift @ARGV;
Это ничего не делает, кроме удаления первого значения из вашего списка аргументов, который затем незамедлительно отбрасывается.
my @array = split(\t,$_);
Вы используете \t
как голое слово, это должно быть регулярное выражение, /\t/
.Ваш @array
объявлен внутри лексической области видимости цикла while и будет не определен вне этого блока.
$N = $sum = 0;
Обе переменные не объявлены, что приведет к смерти сценария при использовании строгого (что очень хорошая идея).Используйте my $N
, чтобы решить это.Кроме того, $N
не очень хорошее имя переменной.
$array[$x-1];
Это ничего не даст.$x
не объявлено (см. Выше), а также не определено.Целое утверждение ничего не делает, это как строка 3;
.Я полагаю, что вы получите ошибку, такую как Useless use of variable in void context
.
$N++;
Это увеличивает $N
до 1, что бесполезно, так как вы только несколько строк выше инициализировали его до 0.
Ну ... список можно продолжить.Я предлагаю вам начать с малого, использовать строгие и предупреждения, так как они являются очень хорошими инструментами, и исправлять ошибки одну за другой.Очень хорошей идеей было бы создать подпрограммы для ваших расчетов, например:
sub sum {
# code here
return $sum;
}
Перейдите на perldoc.perl.org и прочитайте документацию.Особенно полезными будут синтаксис и perlfunc .
Кроме того, вы должны знать, что эту функциональность можно найти в модулях, которые вы можете найти по адресу CPAN .