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";
}
这里非常不建议使用后面的两种写法,严格按照标准常规语法来写,方便阅读理解。