at least one error in previous code ... while condition is wrong.
use strict;
use warnings;
my @FILES;
open $FILES[0], '<', 'file1' or die;
open $FILES[1], '<', 'file2' or die;
my @w = map scalar <$_>, @FILES;
my $empty = "blank line\n";
my %map = (
-1 => [ 0 ],
1 => [ 1 ],
0 => [ 0, 1 ],
);
while (defined $w[0] && defined $w[1]) {
my $cmp = $w[0] cmp $w[1];
print $cmp ? $empty : $w[0];
@w[ @{$map{$cmp}} ] = map scalar <$_>, @FILES[ @{$map{$cmp}} ];
}
# Leftover lines in either file?
print map $empty, map <$_>, @FILES;