perl 新手,尝试使用它的语法,然后我收到此错误消息
$ perl testP
syntax error at testP line 3, near "$_ ("
Execution of testP aborted due to compilation errors.
为了:
$_=$_+1 foreach $_ (@_);
谁能告诉我出了什么问题以及如何解决?谢谢。
foreach 变量( array )以正常表示法使用,例如:
foreach $_ ( @_ ) {
$_ = $_ + 1;
}
但是您使用了相反的表示法,即先操作,然后循环。
在这种情况下,您不能为循环提供变量名(无论如何这都没用,因为您使用的是默认变量 $_),并且循环应该看起来:
$_ = $_ + 1 foreach @_;
另请注意,您可以使用for
而不是foreach
,如果您只是想增加变量,您可以使用 ++ 运算符来完成,从而使其:
$_++ for @_;
$_
将在foreach的每次迭代中获得每个不同的值,并且运算符将后增量这些值。@_
++
所以这样的事情会起作用:
foreach (@_) {$_++;}
注:$_++
相当于$_ = $_ + 1
$_
and@_
是 perl 中的特殊变量,它们具有特殊的行为,在这种情况下$_
,在 foreach 循环的上下文中,每次迭代都采用当前值。
特殊变量是 perl 中复杂而强大的部分之一。您可以在特殊 vars 文档中获得有关它们如何工作的更多信息。
另一件事是您不应该使用特殊变量作为目标,foreach
因为它们很可能无法按预期工作(另请参阅foreach 文档)