Thread String einlesen und nachfolgendes Wort ausgeben (20 answers)
Opened by SCORRPiO at 2014-04-15 10:15

FIFO
 2014-04-15 15:22
#174791 #174791
User since
2005-06-01
469 Artikel
BenutzerIn

user image
2014-04-15T13:17:02 SCORRPiO
hab nur dein
if ( defined $exitCodes{$1} )exit $exitCodes{$1};
verschoben nach der print Ausgabe, dann hab ich auch meine Ausgabe :)


STOP! Wenn Du das hinter die anderen Matchings setzt, ist in $1 nicht mehr das drin, was Du denkst.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $exitWith;
while ( my $zeile = <$dataFH> ) {
    if ( $zeile =~ /($typeRegExp)/ ) {
        if ( defined $exitCodes{$1} ) {
            $exitWith = $exitCodes{$1};
        }
        my ($phy)   = $zeile =~ / \b phy   \s+ (\w+) /x;
        my ($state) = $zeile =~ / \b state \s+ (\w+) /x;
        my ($flags) = $zeile =~ / \b flags \s+ (\w+) /x;
        print "phy: $phy, state: $state, flags: $flags\n";

        exit $exitWith if defined $exitWith; # <--- EDIT: Bedingung ergänzt
    }
    else {
        print "UNKNOWN\n";
    }
}


Deine Version funktioniert nur zufällig, weil der letzte Match sich auf 'flags' bezieht.

Editiert von FIFO: defined-Abfrage vergessen, ergänzt
Last edited: 2014-04-15 17:49:05 +0200 (CEST)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread String einlesen und nachfolgendes Wort ausgeben