my @final; my @array = qw(foo bar baz); for (0..$#array) { my $temp; for my $j (0..$#array) { $temp .= $array[$j]; } push @final, $temp; } #### my $temp; for (0..$#array) { for my $j (0..$#array) { $temp .= $array[$j]; } push @final, $temp; undef $temp; } #### for my $i (0..$#array) { my @temp = @array; push @final, \@temp; undef @temp; } #### for my $i (0..$#array) { my @temp = @array; push @final, [@temp]; undef @temp; }