$valid_line==0; $nbr_line=$ARGV[1]; # format the first digit @_[0], length @_[1] wide with leading 0s sub format { return substr("00000000", 0, (@_[1] - length(@_[0]))) . @_[0]; } open(F0, $ARGV[0]); while() { if (/[a-zA-Z0-9]/) { $valid_line++; $max_tab = 0; while (/\t+/g) { # print $-[0], ' ', $+[0], ' '; $max[$max_tab] = $+[0] if $max[$max_tab] < $+[0] ;$max_tab++; } # print "\n"; $nbr_tab = $max_tab if $nbr_tab < $max_tab; } } $max_line=$nbr_line+$valid_line; seek F0,0,0; while() { s/\r//;chop; $max_tab = 0; while (/[^\t]+/g) { print substr("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t", 0, ($max[$max_tab++] - $+[0]) / 8), substr($_, $-[0], $+[0]); } print "\n"; } close F0;