in reply to remove last column of tab-delimited file

This is nit-picky, but since you asked...

chomp( my @header_for_table1 = split /\t/, <$table1> );

That line is passing an array to chomp() which means it chomps every element. Only the last element will possibly have a newline character. If you split it into two lines it doesn't look as nice but is better Perl. It would have to be a large array before it would make any difference, hence the nit pick comment.

chomp( my $line = <$table1> ); my @header_for_table1 = split /\t/, $line;

Now that I think about it, you are going to discard the final element anyway so you don't need the chomp.