#! perl use warnings; use strict; open my $inFH, '<', 'meineEingabedatei' or die "$!"; open my $outFH, '>', 'meineAusgabedatei' or die "$!"; READ_HANS: while (my $hansLine = <$inFH>) { my ($variable_1, $variable_2); if ($hansLine =~ /\A HANS .* 9999 (\d{3}) /x) { $variable_1 = $1; } elsif ($hansLine =~ /\A HANS .* 8888 (\d{4}) /x) { $variable_1 = $1; } elsif ($hansLine =~ /\A HANS .* 7777 /x) { $variable_1 = "FEHLER"; } else { next READ_HANS; } # ab hier ist $variable_1 definiert READ_DAMPF: while (my $dampfLine = <$inFH>) { if ($dampfLine =~ /\A DAMPF .* 0000 (\d+) /x) { $variable_2 = $1; last READ_DAMPF; } else { next READ_DAMPF; } } last READ_HANS if ! defined $variable_2; # <-- ergänzt if ($variable_1 eq 'FEHLER') { print $outFH "Fehler, bitte manuell prüfen.\n"; } else { print $outFH "ZUSATZ_FORMAT_A $variable_1 " ."ZUSATZ_FORMAT_B $variable_2 " ."ZUSATZ_FORMAT_C\n"; } } # nächste HANSzeile suchen close $inFH; close $outFH;