in reply to About Tabbed Printing

The following will do what you want. Just change the call to printspaced() so it passes whatever delimiter you want as the first argument.
use strict; use warnings; chomp (my @data = <DATA>); $_ = [split / /] for @data; printspaced(' ', \@data); sub printspaced { my ($s, $d, @f, $f) = @_; push @f, '%-'.$_.'s' for widths($d); $f = join($s, @f)."\n"; printf($f, @$_) for @$d; } sub widths { my ($d, @r, $i) = $_[0]; for (@$d) { no warnings; for ($i = 0; $i <= $#$_; $i++) { $r[$i] = length($_->[$i]) if length($_->[$i]) > $r[$i]; } } return @r; } __DATA__ GAL_up800.fasta 6 800 4.8 hm01g.fasta 18 2008 36.144 hm02r.fasta 9 1000 9 train_muscle.fasta 7 50 0.35