这是一个表示:
use strict;
use warnings;
my @array = ("word1", "word2");
print foreach @array, "\n";
效果是打印word1word2\n
。 Perl解释器实际上是如何解析这行代码的?
我想我明白 print foreach @array;
会做什么。我的理解是,这是一个内联循环,本质上相当于以下 foreach
block :
foreach @array {
print; # i.e. print $_;
}
但是,我很不清楚为什么附加 "\n"
到此给出有效的代码。我尝试过以不同的方式将表达式括起来,但它们会导致错误。
最佳答案
这使用了foreach
statement modifier .
发生的情况是这样的:
- foreach (
@array, "\n"
) 之后的表达式在列表上下文中计算。 - 对于产生的每个标量,
$_
是该标量的别名。- 计算
foreach
(print
) 之前的表达式。
这类似于以下内容:
foreach ( @array, "\n" ) {
print;
}
但是,在语句修饰符版本中,没有创建作用域,并且不能使用 next
、last
或 redo
来影响循环。
关于for-loop - 内联 for 循环如何与打印交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77702405/