SERIAL NUMBER: nnn DIE COORDINATES: X=xx,Y=yy [several lines of measurement values] END OF TEST BIN NAME: FAIL_FUNCTIONAL_TEST RESULT: FAIL SERIAL NUMBER: nnn #### #!/usr/bin/perl use warnings; use strict; die "Usage: $0 \n" unless scalar(@ARGV)>1; undef $/; my @f1 = split(/(?=(?:SERIAL NUMBER:\s+\d+))/, <>); my @f2 = split(/(?=(?:SERIAL NUMBER:\s+\d+))/, <>); die "Error: file1 has $#f1 serials, file2 has $#f2\n" if ($#f1 != $#f2); foreach my $i (0 .. $#f1) { print (($f2[$i] =~ m/RESULT:\s+PASS/) ? $f2[$i] : $f1[$i]); } print STDERR "$#f1 serials found\n";