my ( @data, $cnt); while() { if ( $cnt++ % 2 ) { push @data, $_; } else { unshift @data, $_; } } # now open new file and just do (to the FILEHANDLE not STDOUT) print STDOUT @data; __DATA__ 1 2 3 4 5 6 7 8 9 10