Там же несколько проблем с кодом, но основным из них является следующее:
if ($infile) {
$Pos_Int++;
$Neg_Int++;
$Zer_Int++;
}
Вот только оценивая содержание $infile
которое является именем файла. Это всегда будет правдой, и поэтому вы всегда будете увеличивать все ваши счетчики на единицу.
Итак, все, что вы здесь делаете, в основном подсчитывает линии.
Я хотел бы также предположить, однако, что вам не нужно:
open(FHIN, '<', $infile); #Opens the file prompted by user.
my @lines = <FHIN>; #Variable storing the number of lines in the file.
chomp(@lines);
close(FHIN);
Открыть файл, прочитать его в массив, а затем перебирать массив?
Почему бы не вместо этого идти по строкам с циклом while (он также использует меньше памяти).
Также - хороший стиль - использовать лексические файлы, а не имя верхнего регистра, что является глобальной областью.
Итак:
open (my $input, '<', $infile) or die $!; #check return code for errors.
while (my $line = <$input>) { #iterate the input line by line, setting $_ for each.
$Pos_Int++ if $line > 0;
$Neg_Int++ if $line < 0;
$Zer_Int++ if $line == 0;
}
Если делать трюк - но имейте в виду, что это не делает каких-либо проверки ввода. Регулярные выражения могут помочь там, если это необходимо.
также:
if (-e $infile) { #If the file can't be found, it will exit.
} else {
print ("No such file exists. Program closing.\n");
exit;
}
Это является излишним, так как вы можете - и должны - ловушка код возврата open
. Если вы это сделаете, вы поймаете другие условия, такие как файл, который нельзя читать, или быть сломанной символической ссылкой или множеством других проблем.
E.g.
open (my $input, '<', $infile) or die "Problem opening file: $!";
$!
даст вам код ошибки, который немного больше смысла тоже - это вам скажу разницу между «нет такого файла или каталога» и «доступ запрещен», например.
Http: //perldoc.perl. org/perlop.html # Реляционные операторы – toolic
Вам действительно нужны комментарии, такие как 'chomp ($ infile); # Chomps $ infile Variable.'? – Borodin
Да, наш профессор предпочитает иметь их. Кроме того, я добавил неправильный код для начала. Это то, что у меня есть. Мне просто нужно найти, сколько целых чисел находится в файле. –