试图在perl的oneline中编写foreach并失败

use*_*275 1 syntax perl foreach for-loop simplify

新的perl,尝试使用它的语法,然后我收到此错误消息

$ perl testP
syntax error at testP line 3, near "$_ ("
Execution of testP aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

对于:

$_=$_+1 foreach $_ (@_);
Run Code Online (Sandbox Code Playgroud)

谁能告诉我出了什么问题以及如何解决?谢谢.

小智 10

foreach变量(数组)用于常规表示法,如:

foreach $_ ( @_ ) {
    $_ = $_ + 1;
}
Run Code Online (Sandbox Code Playgroud)

但是你使用反向表示法,即先操作,然后循环.

在这种情况下,你不能为循环提供变量名(无论如何都是无用的,因为你使用的是默认变量$ _),循环应该看起来如下:

$_ = $_ + 1 foreach @_;
Run Code Online (Sandbox Code Playgroud)

还请注意,您可以使用for而不是foreach,如果您只想增加变量,可以使用++运算符,从而使其成为:

$_++ for @_;
Run Code Online (Sandbox Code Playgroud)