my @fulls; for my $area (@areas) { for my $short (@shorts) { push @fulls, "$short.area$area"; } } #### my @fulls = map { my $area = $_; map "$_.area$area", @shorts } @areas; #### my @fulls = map { my $short = $_; map "$short.area$_", @areas } @shorts; #### use Algorithm::Loops qw( NestedLoops ); my @fulls = NestedLoops( [ \@areas, \@shorts ], sub { "$_[1].area$_[0]" }, );