$ _をよく使うので、その使い方をもっとよく理解したいと思います。$ _は、私が理解して使用した限り、暗黙の値のグローバル変数です。
とにかく$_が設定されているように見えるので、読みやすさ以外に$ _よりも名前付きループ変数を使用する理由はありますか?
$ _がグローバル変数であることが重要なのはどのような場合ですか?
だから私が使うなら
for (@array){
print $_;
}
あるいは
print $_ for @array;
と同じ効果があります
for my $var (@array){
print $var;
}
しかし、それは同じように機能しますか?正確ではないと思いますが、実際の違いは何ですか?
更新:
この例では、$_のスコープも正しく設定されているようです。もうグローバルではないですか?5.12.3を使用しています。
#!/usr/bin/perl
use strict;
use warnings;
my @array = qw/one two three four/;
my @other_array = qw/1 2 3 4/;
for (@array){
for (@other_array){
print $_;
}
print $_;
}
1234one1234two1234three1234fourを正しく出力します。
グローバル$_の場合、私は1234 4 1234 4 1234 4 1234 4 ..を期待していましたか、それとも明らかな何かが欠けていますか?
$ _グローバルはいつですか?
更新:
さて、さまざまな答えとperlsynをもっと注意深く読んだ後、私は結論に達しました:
読みやすさに加えて、$ _の暗黙的なローカリゼーションを知って考慮に入れる必要があるため、$ _の使用を避けることをお勧めします。そうしないと、予期しない動作が発生する可能性があります。
その問題を明確にしてくれてありがとう。