P:\test>type test.dat 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 P:\test>type flip.pl #! perl -slw use strict; my @cols; push @cols, [ split ] while $_ = <>; for my $n ( 0 .. $#{ $cols[ 0 ] } ) { print join ' ', map{ $_->[ $n ] } @cols; } P:\test>perl -le " open F, qq[ flip test.dat |]; print join '|', split while $_ = ; " 1|1|1|1|1|1|1|1 2|2|2|2|2|2|2|2 3|3|3|3|3|3|3|3 4|4|4|4|4|4|4|4 5|5|5|5|5|5|5|5