for-loop - 内联 for 循环如何与打印交互?

标签 for-loop perl foreach

这是一个表示:

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 .

发生的情况是这样的:

  1. foreach (@array, "\n") 之后的表达式在列表上下文中计算。
  2. 对于产生的每个标量,
    1. $_ 是该标量的别名。
    2. 计算 foreach (print) 之前的表达式。

这类似于以下内容:

foreach ( @array, "\n" ) {
   print;
}

但是,在语句修饰符版本中,没有创建作用域,并且不能使用 nextlastredo 来影响循环。

关于for-loop - 内联 for 循环如何与打印交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77702405/

相关文章:

python - 如何增加变量名/这是个坏主意吗

javascript - 单击事件循环丢失数组范围

php - 从多维数组中提取值并放置在逗号分隔的字符串中

php - 尝试让 php foreach 工作时出现问题

c# - 返回 foreach 中的第一个元素

c++如何在内部循环中使用带自动的 vector 删除对象

for-loop - Golang 一行for循环

perl - 在调用 "value"方法之前测试 perl cookie/值是否存在

javascript - 如何解码 JSON 字符串?

regex - Perl:匹配一个模式并打印接下来的 N 行 K 次