#!/usr/bin/perl

# "Safe" version of paste that dies if the input files have different lengths.

use strict;
use warnings;
use FileHandle;
use List::Util qw/sum reduce/;

binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';

my @fh = map { new FileHandle($_, "< :encoding(UTF-8)") } @ARGV;

for (;;) {
  my @lines = map { $_->getline } @fh;
  
  my $num_done = grep { ! defined $_ } @lines;
  if ($num_done > 0 and $num_done < @lines) {
    print STDERR "* FATAL! unequal file lengths.\n";
    exit 1;
  }
  last if $num_done == @lines;

  chomp(@lines);
  print join("\t", @lines) . $/;
}
