Liebe/-r Experte/-in,
ich habe ein Perl-Script geschrieben, mit dem eine Textdatei nach einem Suchwort durchsucht werden soll.
Wurde das Suchwort gefunden, soll das Script mir die entsprechende Zeile in der DOS Eingabeaufforderung ausgeben.
Alles klappt so wie ich es mir vorgestellt habe, leider werden die deutschen Umlaute nicht richtig ausgegeben oder gesucht.
Hier einmal das Script, das ich mit Perl V 5.12.0 laufen lasse. Die Textdatei ist UTF-8 codiert gespeichert.
&START();
&EINGABE();
if ($suche eq „Hilfe“){
&HILFE();
&EINGABE();
&SUCHE();
}
else{
&SUCHE();
}
&ENDE();
sub START{
#################################################
print „=======================================================\n“; # Gib folgenden Text aus
print „= InLib Version 1.0 =\n“; #
print „=======================================================\n“; #
$file = ‚inlib.ibf‘; # Datenbankfile
$ausgabedatei=„Ergebnis.txt“; # Filename zuweisen
$helpfile=„Hilfe.txt“;
open (AUSGABE,">$ausgabedatei"); # Ausgabedatei leeren und bereit machen für
close (AUSGABE); # die Ausgabe eines neuen Suchergebnisses
} #
#################################################
sub EINGABE{
#################################################
print ">> "; # Schreibe „>>“
$suche=; # Suchbegriff eingeben
chomp($suche); # Zeilenumbruch entfernen
#################################################
}
sub SUCHE{
#################################################
print „\n“;
print „\n“;
open (AUSGABE,">> $ausgabedatei"); # Ausgabedatei zum anhängen öffnen
open(INFO, $file); # Datenbankfile zum lesen öffnen
while(1){ #
if(eof(INFO)) {last; } # Verlasse die Schleife wenn das Ende der Datei erreicht ist
$lines = ; # Key einlesen
chomp($lines); # Zeilenumbruch entfernen
if ($lines =~ /$suche/i) { # Wenn der Suchbegriff gefunden wurde
print „$lines\n“; # hänge die Fundzeile an die Ausgabedatei an
$found++; # und erhöhre den Fundzähler um 1
} #
} #
print „\nSuchbegriff : $suche\n“; # Schreibe ins Suchergebniss wie oft der Suchbegriff
print „Treffer : $found“; # gefunden worden ist.
print „\n“;
print „\n“;
} #
#################################################
sub ENDE{
#################################################
close(INFO); # Datenbankdatei schließen
close(AUSGABE); # Ausgabedatei schließen
} #
#################################################
sub HILFE{
#################################################
open(HELP, $helpfile); # Helpfile zum lesen öffnen
while (1){ # Undendliche Schleife
if(eof(HELP)) {last; } # Verlasse die Schleife wenn das Ende der Datei erreicht ist
$lines = ; # Zeile einlesen
print $lines; # Zeile ausgeben
} #
close (HELP); # Hilfedatei schliessen
#################################################
}