Es gibt einige Probleme mit Ihrem Code, aber die große Gefahr, ist dies:
if ($infile) {
$Pos_Int++;
$Neg_Int++;
$Zer_Int++;
}
, die nur ist, den Inhalt $infile
Auswertung, die der Dateiname ist. Es wird immer wahr sein, und deshalb werden Sie immer alle Ihre Zähler um eins erhöhen.
Also alles, was Sie hier tun, ist im Grunde Linien zählen.
würde vorschlagen, ich aber auch, dass Sie nicht brauchen: eine Datei
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);
Open, es in ein Array lesen, dann das Array iterieren?
Warum nicht stattdessen Zeile für Zeile mit einer while-Schleife (es verwendet auch weniger Speicher).
Auch - guter Stil ist die Verwendung von lexikalischen Dateihandles anstelle eines Großbuchstabennamens, der ein globaler Geltungsbereich ist.
So:
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;
}
den Trick tun sollten - aber bedenken, spielt es keine Eingabeüberprüfung tun. Reguläre Ausdrücke könnten dort helfen, wenn es nötig ist.
auch:
if (-e $infile) { #If the file can't be found, it will exit.
} else {
print ("No such file exists. Program closing.\n");
exit;
}
Dies ist überflüssig, denn man kann - und sollte - Falle der Return-Code von open
. Wenn Sie das tun, fangen Sie andere Bedingungen wie die Datei, die nicht lesbar ist, oder eine unterbrochene symbolische Verknüpfung oder eine Reihe anderer Probleme.
z.
open (my $input, '<', $infile) or die "Problem opening file: $!";
$!
geben Ihnen einen Fehlercode, der auch ein bisschen mehr sinnvoll ist - es wird Ihnen sagen, den Unterschied zwischen ‚keine solche Datei oder das Verzeichnis‘ und ‚Zugriff verweigert‘ zum Beispiel.
http: //perldoc.perl. org/perlop.html # Relationale Operatoren – toolic
Brauchen Sie wirklich Kommentare wie 'chomp ($ infile); #Chomps die Variable $ infile.' – Borodin
Ja, unser Professor bevorzugt uns, solche zu haben. Außerdem habe ich den falschen Code hinzugefügt, um damit zu beginnen. Das habe ich. Ich muss nur herausfinden, wie viele 0 ganze Zahlen in der Datei sind. –