use warnings; use strict; my @AoA; foreach ( ) { for ( my @i = split( /\s+/ ); $#i >= 0; ) { unless ( defined( $AoA[ $#i ] ) ) { $AoA[ $#i ] = [ ]; } push @{ $AoA[ $#i ] } , pop( @i ); }; } print join( ', ' , @{ $AoA[ 0 ] } ) , "\n"; __DATA__ 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !