#!/usr/bin/perl -w use strict; if (scalar @ARGV < 2) { die "Usage: $0 file1.txt file2.txt ...\n\n Concatenate the nth line of each input file. All files\n must be the same length.\n\n"; } my @fhs=(); for my $file (@ARGV) { my $fh; open $fh, "<$file" or die "Can't read $file: $!\n"; push @fhs, $fh; } my $first = shift @fhs; while(my $x = <$first>) { my $ind = 0; chomp $x; my @fields = ($x); for my $fh (@fhs) { $ind++; $x = <$fh>; die "ERROR: Mismatched number of lines: $ARGV[$ind]\n" unless $x; chomp $x; push @fields, $x; } print join ' ||| ', @fields; print "\n"; } my $ind = 0; for my $fh (@fhs) { $ind++; my $x=<$fh>; die "ERROR: $ARGV[$ind] has extra lines!\n" if $x; } exit 0; for my $fh (@fhs) { close $fh; }