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

haj
 2020-04-09 16:49
#191730 #191730
User since
2015-01-07
404 articles
BenutzerIn

user image
Noch ein paar Kleinigkeiten als Ergänzung zu den Hinweisen der anderen Community-Perler:

  • Perl kennt bei den regulären Ausdrücken das \b, das eine Grenze zwischen einem "Wort-zeichen" und einem "nicht-Wort-Zeichen" kennzeichnet. Das kann man zum Beispiel schon auf die Benutzerangabe $line anwenden, um nicht nur den Zeilenumbruch abzutrennen (dafür ist chomp das richtige, wie von Linuxer angegeben), sondern auch sicherzustellen, dass man nach genau einem Wort sucht, ohne Leerzeichen davor oder danach.
  • Die bisherige Suche nach dem Wort berücksichtigt nicht, dass das Wort mehrfach in einer Zeile vorkommen kann - da wird statt dessen gezählt, in wie vielen Zeilen das Wort vorkommt. Man kann ganz einfach Perl zählen lassen, das spart schon mal die if-Abfrage:
    Code (perl): (dl )
    $count += (scalar $wert =~ /(\b$line\b)/g);
  • Und wenn man das mal hat, dann fällt auf, dass es auch gar nicht nötig ist, die Datei vorher in einzelne Zeilen aufzutrennen, man kann sie auch als eine einzige Wurst behandeln.

Dann braucht der Code weder die while- noch die foreach-Schleife und erkennt auch Wörter, die nicht durch ein Leerzeichen voneinander getrennt sind wie z.B. vorher/nachher.

Aber einen Haken hat das ganze natürlich auch: Bei der Benutzung von \b kommt das beliebte Thema der Zeichencodierung zum Tragen. Im Deutschen gibt es Wörter, die enthalten Umlaute, und dafür spielt es eine Rolle, in welcher Codierung die in der Datei ue1.txt stehen - und auch, auf welchem Terminal bzw. Betriebssystem das ganze läuft. Über die Datei entscheidet der, der sie geschrieben hat. Heutige Linux-Terminals laufen unter UTF-8, die Windows-Eingabeaufforderung mit Codepage 850. Perl kann das alles, wenn man's ihm sagt. Das Thema kneift auch bei Gustls s/[^\w]//g;, denn in keinem heutigen Terminal ist ohne Dekodierung 'ä' =~ /\w/. Das ist aber ein ganz anderes Thema.
Last edited: 2020-04-09 17:21:30 +0200 (CEST)

View full thread Wörter in einer Datei suchen