如何分解两个列表

Fly*_*ale 1 perl factorization

有没有办法在Perl中轻松分解某些列表?

例如,有2个列表('a', 'b', 'c'),('d', 'e', 'f') 我想要输出('ad', 'ae', 'af' .... 'ce', 'cf')

现在我在做

use strict;
use warnings;

my @listA = ('a', 'b', 'c');
my @listB = ('d', 'e', 'f');
my @listC = ();

foreach my $elementA (@listA)
{
    foreach my $elementB (@listB)
    {
        push(@listC, $elementA.$elementB);
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做很好,但我想知道是否有更"理查"的方式呢?

谢谢 :)

sim*_*que 8

您可以使用map它来更多Perlish.

my @list_a = qw( a b c );
my @list_b = qw( d e f );
my @list_c = map {
    my $temporary = $_;
    map { $temporary . $_ } @list_b
} @list_a;
Run Code Online (Sandbox Code Playgroud)

这导致与@list_c上面相同.

我们需要$temporary变量,因为两个maps都将设置主题$_,而内部map将覆盖外部主题,因此我们必须将其保存在另一个词法中.

请注意,我重命名了您的变量并使用了qw(),因为您要求Perlish.Perl中关于样式的共识是使用snake case变量名.尽管驼峰的情况以我们的骆驼命名,但我们不会将它用于变量.仅适用于包名称.