#!/usr/bin/env perl -l
use strict;
use warnings;
use autodie;
die "Usage: $0 file1 file2\n" unless @ARGV == 2;
my (@fhs, $shorter);
for (@ARGV) {
die "'$_' is zero-length\n" if -z;
open my $fh, '<', $_;
push @fhs, $fh;
}
LOOP: while (1) {
my @out_line;
for (0 .. 1) {
my $line = readline $fhs[$_];
if (! defined $line) {
$shorter = $_ unless defined $shorter;
last LOOP if $shorter != $_;
seek $fhs[$_], 0, 0;
$line = readline $fhs[$_];
}
push @out_line, $line;
}
chomp @out_line;
print @out_line;
}
####
$ ls -al pm_1191418_data_*
-rw-r--r-- 1 ken staff 1 May 29 16:57 pm_1191418_data_blank.txt
-rw-r--r-- 1 ken staff 24 May 29 16:14 pm_1191418_data_five.txt
-rw-r--r-- 1 ken staff 8 May 29 16:14 pm_1191418_data_two.txt
-rw-r--r-- 1 ken staff 0 May 29 16:47 pm_1191418_data_zero.txt
$ cat pm_1191418_data_zero.txt
$ cat pm_1191418_data_blank.txt
$ cat pm_1191418_data_two.txt
ONE
TWO
$ cat pm_1191418_data_five.txt
one
two
three
four
five
####
$ pm_1191418_file_merge.pl
Usage: ./pm_1191418_file_merge.pl file1 file2
$ pm_1191418_file_merge.pl pm_1191418_data_zero.txt pm_1191418_data_two.txt
'pm_1191418_data_zero.txt' is zero-length
####
$ pm_1191418_file_merge.pl pm_1191418_data_blank.txt pm_1191418_data_two.txt
ONE
TWO
$ pm_1191418_file_merge.pl pm_1191418_data_two.txt pm_1191418_data_blank.txt
ONE
TWO
$ pm_1191418_file_merge.pl pm_1191418_data_two.txt pm_1191418_data_five.txt
ONEone
TWOtwo
ONEthree
TWOfour
ONEfive
$ pm_1191418_file_merge.pl pm_1191418_data_five.txt pm_1191418_data_two.txt
oneONE
twoTWO
threeONE
fourTWO
fiveONE
$ pm_1191418_file_merge.pl pm_1191418_data_blank.txt pm_1191418_data_blank.txt
$ pm_1191418_file_merge.pl pm_1191418_data_two.txt pm_1191418_data_two.txt
ONEONE
TWOTWO