Thread Wörter in einer Datei suchen (8 answers)
Opened by KatPerl at 2020-04-09 14:21

Linuxer
 2020-04-09 15:06
#191723 #191723
User since
2006-01-27
3746 articles
HausmeisterIn

user image
Hallo,

Ich denke, der Bug liegt hier begraben:

Wenn Du so my $line = <STDIN>; Eingaben einliest, steht am Ende immer ein Zeilenumbruch.
Den solltest vor weiterer Verarbeitung entfernen; dazu kannst Du z.B. Perldoc:perlfunc chomp verwenden.


Ansonsten stecken da noch andere (Denk)Fehler drin.

Du hängst den Dateiinhalt an einen Skalar immer hinten an. Damit hat Dein späterer Schleifendurchlauf nur einen Durchlauf.

Es ist auch gar nicht nötig die Datei komplett einzulesen.

Frage das Suchwort vor der einlesenden While-Schleife ab.
Entferne den Zeilenumbruch vom Suchwort (oben genannt).

Innerhalb der While()-Schleife machst Du dann den Vergleich, ob das Suchwort gefunden werden kann.

Und Du solltest Deine Variable sinniger benennen.
Gut, dass Dein Dateihandle in einer Variable steht; aber warum heisst die $text. Das ist ein Handle, aus dem gelesen wird.

Und warum steckt zum Beispiel das Suchwort in einer Variable $line?


Vorgeschlagenes Schema:
  • Definiere zu lesende Datei in einer Variable; z.B. $filename
  • Initialisiere Zählervariable
  • Lese Suchbegriff ein: my $search = <STDIN>;
  • Entferne den Umbruch von Suchbegriff
  • Öffne Deine Daten-Datei lesend: open(my $handle, '<', $filename) or die "open($filename,readonly) failed: $!";
  • lese Datei zeilenweise mit while: while ( my $line = <$handle> ) { ... }
  • innerhalb der Schleife prüfst Du, ob Dein Suchbegriff in der Zeile steckt; wenn ja, erhöhe den Counter
  • Nach der While-Schleife schließt Du die Datei wieder und gibst den Zähler aus.

Last edited: 2020-04-09 15:09:00 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Wörter in einer Datei suchen