#!/usr/bin/perl use strict; use warnings; my $input = $ARGV[0]; my %map = ( 'F A I L' => ['faild','01'], 'P A S S' => ['passed','00'], ); my @parts; { # lese Datei in Bloecken ein. Ein Block wird von # einer Leerzeile abgeschlossen local $/ = "\n\n"; open my $fh, '<', $input or die $!; @parts = <$fh>; close $fh; } my ($day,$month,$year,$start) = $parts[0] =~ /^(\d+)\.(\d+)\.(\d+)\s*(\d+:\d+:\d+)/; my ($kundennummer) = $parts[1] =~ /Kundennummer:\s*(\d+)/; my ($sachnummer) = $parts[1] =~ /Sachnummer:\s*(\w+)/; my ($flexnummer) = $parts[1] =~ /Flexnummer:\s*(\d+)/; my ($uhrzeit, $result) = $parts[-1] =~ /(\d+:\d+:\d+)\s*((?:\w\s){3}\w)/; my $fehler = join " ", split /\n/, $parts[3]; my ($res,$status) = @{$map{$result}}; my $starttest = sprintf "%02d%02d%02d%02d%02d%02d", $year, $month, $day, split /:/,$start; my $endetest = sprintf "%02d%02d%02d%02d%02d%02d", $year, $month, $day, split /:/,$uhrzeit; print "{\@BATCH|$sachnummer||GOEPEL_BSCAN||KDSNR:$kundennummer|ICT||PB/PL_P|uqm161|||\n"; print "{\@BTEST|$flexnummer|$status|$starttest|||||n|n|$endetest||1|\n"; print "{\@RPT|$res}\n"; print "{\@RPT|$fehler}" if $fehler !~ /^\d/;