open my $FH, '>', "file_difference_report" or die $!; my @base_file_names = ( 'file1', 'file2', 'file3', 'file4' ); for my $file_name (@base_file_names) { if (! -e "$file_name.xml") { print "$file_name.xml: Not present ... not interesting file?\n"; next; } if (! -e "$file_name.bak") { print "$file_name: no backup, so probably not changed\n"; next; } # If we get here, we have a .bak and a .xml file, so make another program # compare them for us: my $output = `diff $file_name.xml $file_name.bak`; print $FH "\n\n===== $file_name changes =====\n"; print $FH $output; print $FH "\n\n"; }