$ cat pm_1075362_1.txt
file 1 line 1
file 1 line 2
$ cat pm_1075362_2.txt
file 2 line 1
file 2 line 2
file 2 line 3
$ cat pm_1075362_3.txt
file 3 line 1
file 3 line 2
####
#!/usr/bin/env perl -l
use strict;
use warnings;
use autodie;
use Tie::File;
use List::MoreUtils qw{pairwise};
my ($file1, $file2, $file3) = map { "pm_1075362_$_.txt" } 1 .. 3;
tie my @file1, 'Tie::File', $file1;
tie my @file2, 'Tie::File', $file2;
tie my @file3, 'Tie::File', $file3;
print '*** File 1 (2 lines) and File 2 (3 lines):';
print_tabbed_pairs(\@file1, \@file2);
print '*** File 2 (3 lines) and File 1 (2 lines):';
print_tabbed_pairs(\@file2, \@file1);
print '*** File 1 (2 lines) and File 3 (2 lines):';
print_tabbed_pairs(\@file1, \@file3);
sub print_tabbed_pairs {
my ($file1, $file2) = @_;
print for pairwise {
join "\t" => (defined $a ? $a : ''), (defined $b ? $b : '')
} @$file1, @$file2;
}
####
*** File 1 (2 lines) and File 2 (3 lines):
file 1 line 1 file 2 line 1
file 1 line 2 file 2 line 2
file 2 line 3
*** File 2 (3 lines) and File 1 (2 lines):
file 2 line 1 file 1 line 1
file 2 line 2 file 1 line 2
file 2 line 3
*** File 1 (2 lines) and File 3 (2 lines):
file 1 line 1 file 3 line 1
file 1 line 2 file 3 line 2