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
$_
および@_
はperlの特別な変数であり、特別な動作をします。この場合$_
、foreachループのコンテキストでは、各反復で現在の値を取得します。
特別な変数は、perlの複雑で強力な部分の1つです。それらが特別なvarsドキュメントでどのように機能するかについての詳細情報を得ることができます。
もう1つのことは、特別な変数をターゲットとして使用しないでください。これらはおそらく期待どおりに機能しないためです(foreachのドキュメントも参照してください) 。foreach