use strict; use warnings; my @Zeilen = (""); my $status = 3; # Wenn kein Status dann 3 (UNKNOWN) my @knownTypes = qw( ONLINE RESYNC_IN_PROGRESS MISSING OUT_OF_SYNC OFFLINE ); my $typeRegExp = join( '|', @knownTypes ); $typeRegExp = qr/ \b $typeRegExp \b /x; # RegExp nur einmal kompilieren open( my $dataFH, '<', 'test4' ) or die "Datei nicht gefunden\n"; ZEILE: while ( my $zeile = <$dataFH> ) { if ( $zeile =~ / \b OPTIMAL \b /x ) { exit 0; # <--- Wirklich Programm beenden? next ZEILE; # oder nächste Zeile? } if ( $zeile =~ /$typeRegExp/ ) { 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"; next ZEILE; } print "UNKNOWN\n"; } close( $dataFH );