Thread Zeichenkette in Datei suchen (3 answers)
Opened by dschingis at 2007-10-15 13:27

Strat
 2007-10-15 14:00
#100834 #100834
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
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/
Antworten mit Zitat

View full thread Zeichenkette in Datei suchen