Thread String einlesen und nachfolgendes Wort ausgeben
(20 answers)
Opened by SCORRPiO at 2014-04-15 10:15 2014-04-15T12:38:03 SCORRPiO Wo soll der exit-code denn hin(führen)? Du musst überlegen, wie Du auf das Vorkommen von RESYNC_IN_PROGRESS etc. reagieren willst: Schleife beenden? Programm beenden? Wenn das aufwendiger wird, lohnt sich vielleicht ein Dispatcher. Edit: Hier eine Version, die mit passendem exit-code aussteigt, sobald eine Zeile mit Reizwort auftritt: 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 use strict; use warnings; my $status = 3; # Wenn kein Status dann 3 (UNKNOWN) my %exitCodes = ( OPTIMAL => 0, RESYNC_IN_PROGRESS => 1, MISSING => 2, OUT_OF_SYNC => 2, ONLINE => undef, OFFLINE => undef, ); my $typeRegExp = join( '|', keys %exitCodes ); $typeRegExp = qr/ \b $typeRegExp \b /x; # RegExp nur einmal kompilieren open( my $dataFH, '<', 'test4' ) or die "Datei nicht gefunden\n"; while ( my $zeile = <$dataFH> ) { if ( $zeile =~ /($typeRegExp)/ ) { if ( defined $exitCodes{$1} ) { exit $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"; } else { print "UNKNOWN\n"; } } close( $dataFH ); Last edited: 2014-04-15 14:55:58 +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"
|