ありあなたのコードで問題のカップルだが、主要な一つはこれです:ファイル名のみです$infile
の内容を評価しています
if ($infile) {
$Pos_Int++;
$Neg_Int++;
$Zer_Int++;
}
を。それは常に真実なので、常にカウンターを1つ増やします。
ここでやっていることは、基本的には線を集めることです。 、そして、配列にそれを読んで、配列を反復
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ループで1行ずつ行かないでください(メモリも少なくなります)。
また、グローバルスコープである大文字の名前ではなく、字句ファイルハンドルを使用することをお勧めします。
ので:
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
からの戻りコード。そうすると、ファイルが読めなくなったり、壊れたシンボリックリンクやその他の問題が発生したりするなど、他の条件が発生します。
など。
open (my $input, '<', $infile) or die "Problem opening file: $!";
$!
はあなたにあまりにももう少し有意義だエラーコードを与えるだろう - それはあなたが「いいえそのようなファイルまたはディレクトリ」と例えば「権限拒否」の違いを教えてあげましょう。
ます。http://perldoc.perl。 org/perlop.html#関係演算子 – toolic
'chomp($ infile);のようなコメントが本当に必要ですか? #Chomps $ infile Variable.'? – Borodin
はい、私たちの教授は私たちにそれらを持ってほしいと思っています。また、私は間違ったコードを追加しました。これは私が持っているものです。私はちょうど0個の整数がファイル内にどれくらいあるか調べる必要があります。 –