#arrays #perl
#массивы #perl
Вопрос:
У меня ошибка, в которой говорится, что prototype not terminated at filename.txt line number 113
строка where as с номером 113 принадлежит другой программе, которая успешно запущена.
sub howmany(
my @H = @_;
my $m = 0;
foreach $x (@H) {
if ( $x > 5 ) {
$m =1;
}
else {
$m =0;
}
}
print "Number of elements greater than 5 is equal to: $m n";
}
howmany(1,6,9);
Комментарии:
1. всегда начинайте с :
use strict; use warnings;
2. Совет:
$m = 0;
???3. Совет:
howmany
следуетreturn
ли считать. Это4. если элемент массива больше пяти, он добавит единицу к $ m, в противном случае он ничего не добавит и проверит следующий элемент
5. Это то, что он должен делать, но вы добавляете ноль вместо того, чтобы ничего не добавлять / делать.
Ответ №1:
За sub
ключевым словом должно следовать { }
not ( )
(если вы определяете простую функцию), вот почему ошибка
prototype not terminated
После этого всегда начинайте с : use strict; use warnings;
Поместите это и отладьте свой скрипт, там больше ошибок.
И последнее, но не менее важное: сделайте правильный отступ в коде, используя редактор с подсветкой синтаксиса, вы сэкономите много времени на отладку
Ответ №2:
Ошибка связана с круглыми скобками. Никогда не делайте $ m = 0; Поскольку вы фактически загружаете процессор впустую. Конечно, это не будет видно на такой маленькой функции, но…
sub howmany {
my $m = 0;
foreach (@_) {
$m if ($_ > 5);
}
print "Number of elements greater than 5 is equal to: $m n";
}
howmany(1,6,9);