#! perl -slw use strict; use Data::Dump qw[ pp ]; my @data = map[ split ' ' ], ; pp \@data; my @xformed; push @xformed, [ map shift @$_ // (), @data ] while @{ $data[ 0 ] }; pp \@xformed; __DATA__ 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16