Thread Zeichenkette in Datei suchen
(3 answers)
Opened by dschingis at 2007-10-15 13:27
Ich wuerde das ganze folgendermaszen schreiben:
1. warnings und strict verwenden; hilft enorm bei der Fehlersuche und macht perl in meinen Augen erst verwendbar. Warum? Siehe http://www.fabiani.net/ -> Vortraege -> Einfuehrung in Perl -> Die Zaehmung des Kamels 2. nicht alles einlesen, sondern nur Zeile fuer Zeile. Sowas ist gerade bei grossen Dateien um einiges schneller, weil es RAM spart. Und keinen globalen Filehandle verwenden, sondern einen lokalen; das macht das Programm von aussen unabhaengiger. 3. = ist kein Vergleich, sondern eine Zuweisung. Wenn du vergleichen willst, dann mit == fuer numerischen Kontext oder eq fuer String-Kontext (also in deinem Fall eq) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #!/usr/bin/perl use warnings; # 1 use strict; # 1 # Suchdatei my $logfile = "/root/install.log"; # Suchstrings my $esx301 = "Installing VMware-esx-3.0.1-32039.i386."; my $esx302 = "Installing VMware-esx-3.0.2-52542.i386."; my $centOS = "centos-release - 10:5-0.0.el5.centos.2.i386 installieren"; #Suchdatei oeffnen und in Array kopieren: 2 open( my $HANDLE, '<', $logfile) or die "Die Datei $logfile konnte nicht geoeffnet werden! Fehler: $!"; while( my $line = <$HANDLE> ) { # nur immer 1 Zeile im RAM lesen chomp $line; if( $line eq $esx301 ) { # 3 print "ESX 3.0.1 gefunden\n"; } elsif( $line eq $esx302 ) { # 3 print "ESX 3.0.2 gefunden"; } elsif( $line eq $centOS) { # 3 print "CentOS gefunden"; } else { print "Keine gueltige OS Version gefunden!!!" } } # while close $HANDLE or die "Die Datei $logfile konnte nicht geschlossen werden! Fehler: $!"; perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |