use strict; use warnings; my ($sachnummer, $kundennummer, $seriennummer, $starttest, $endetest); my ($status, $result, $fehler, @fehler, $date, $start_pos, $end_pos); open my $fh, '<', 'data1.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 $end_pos <= tell($fh); $hit = 1 if $line =~ /^\z/; 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;