my ($sachnummer, $kundennummer, $seriennummer, $starttest, $endetest); my ($status, $result, $fehler, @fehler, $date, $start_pos, $end_pos); open my $fh, '<', 'data.txt' or die $!; while (my $line = <$fh>) {   if (!$starttest && $line =~ /(\d\d)\.(\d\d)\.\d\d(\d\d)\s+(\d\d):(\d\d):(\d\d)/) {      $date = "$3$2$1";      $starttest = "$3$2$1$4$5$6";   } elsif (!$endetest && $line =~ /(\d\d):(\d\d):(\d\d)\s+(?: P\sA\sS\sS|F\sA\sI\sL)/x) {      $endetest = "$date$1$2$3";   } elsif (!$sachnummer && $line =~ /Sachnummer:\s*AATHD(\d+)\./) {      $sachnummer = $1;   } elsif (!$kundennummer && $line =~ /Kundennummer:\s*(\d+)/) {      $kundennummer = $1;   } elsif (!$seriennummer && $line =~ /Flexnummer:\s*([0-9\.]+)/) {      $seriennummer = $1;      $seriennummer =~ s/\.//g;   } elsif ($line =~ /PASS/) {      $start_pos = tell($fh);   } elsif ($line =~ /FAIL/) {      $end_pos = tell($fh);   } } if ($end_pos) {   $status = '01';   $result = 'Failed';   seek($fh, $start_pos, 0);   my $hit;   while (my $line = <$fh>) {      chomp($line);      last if $hit && $line =~ /^$/;      $hit = 1 if $line =~ /^$/;      push @fehler, $line if $hit;   }   $fehler = join(' ', @fehler);   $fehler =~ s/\s+/ /g; } else {   $status = '00';   $result = 'Passed'; } close $fh; print "{\@BATCH|$sachnummer||GOEPEL_BSCAN||KDSNR:$kundennummer|ICT||PB/PL_P|uqm161|||\n"; print "{\@BTEST|$seriennummer|$status|$starttest|||||n|n|$endetest||1|\n"; print "{\@RPT|$result}\n"; print "{\@RPT|$fehler}\n" if $fehler;