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 );