变量中§

请参阅主要文档 在上下文中 了解$ 变量

$_ 是主题变量。在每个中创建一个新的变量。它也是没有显式签名的块的默认参数,因此像 for @array { ... }given $var { ... } 这样的构造通过调用块将变量的值或值绑定到 $_

for <a b c> { say $_ }  # binds $_ to 'a', 'b' and 'c' in turn 
say $_ for <a b c>;     # same, even though it's not a block 
given 'a'   { say $_ }  # binds $_ to 'a' 
say $_ given 'a';       # same, even though it's not a block

因为 $_ 绑定到迭代的值,所以如果 $_ 绑定到可赋值的东西,你也可以赋值给 $_

my @numbers = ^5;   # 0 through 4 
$_++ for @numbers;  # increment all elements of @numbers 
say @numbers;
 
# OUTPUT: «1 2 3 4 5␤»

CATCH 块将 $_ 绑定到捕获到的异常。~~ 智能匹配运算符将 $_ 在右侧表达式中绑定到左侧表达式的值。

可以通过省略变量名来缩短对 $_ 的方法调用

.say;                   # same as $_.say

m/regex//regex/ 正则表达式匹配和 s/regex/subst/ 替换在 $_ 上工作

say "Looking for strings with non-alphabetic characters...";
for <ab:c d$e fgh ij*> {
    .say if m/<-alpha>/;
}
 
# OUTPUT: «Looking for strings with non-alphabetic characters... 
#          ab:c 
#          d$e 
#          ij*␤»