Perl语言里map和split组合使用的注意点(踩坑)
Perl语言里map和split组合使用的注意点(踩坑)

Perl语言里map和split组合使用的注意点(踩坑)

my @books = ("Pride and Prejudice", "Emma", "Masfield Park");

# 使用map和split将每个书名按空格分割,并返回一个新的二维数组



# # 输出结果
my @words = map {[ split /\s+/,$_ ]}  @books;
#这是最标准的写法 外层是: map { } @array ;内层用中括号获取一个匿名数组,内部split /\s+/,$_ 。这样会返回一个二维数组。

# my @words = map {[ split /\s+/, ]}  @books;
# 这是把内部split /\s+/,$_ 的$_省略。这样会返回也是一个完全一样的一个二维数组。

# my @words = map [ split /\s+/,$_ ],  @books;
#这是把外层map { } @array 的花括号省略然后加一个逗号,不再是一个完整的模块,而实一个表达式。这样会返回也是一个完全一样的一个二维数组。

print"@words\n";

#两层循环,遍历输出这个二维数组
foreach my  $word (@words) {
    print "$word:";
    foreach my $word2 (0..$#{$word}){
        print "@$word[$word2]      ";
    }
    print"\n";
}

这里非常不建议使用后面的两种写法,严格按照标准常规语法来写,方便阅读理解。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注