#!/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";