use strict; use warnings; my @array = ( 1 .. 9 ); my @newArray = map { [ exists $array[ 2 * $_ + 1 ] ? ( $array[ 2 * $_ ], $array[ 2 * $_ + 1 ] ) : $array[ 2 * $_ ] ] } 0 .. $#array / 2; foreach my $raSubArray ( @newArray ) { local $" = q{, }; print qq{[ @$raSubArray ]\n}; } #### [ 1, 2 ] [ 3, 4 ] [ 5, 6 ] [ 7, 8 ] [ 9 ]