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}; }