これは、同じ名前の 2 つの変数を含めるように作成されたスクリプト全体です。一方は他方をマスクしています。
#!/usr/bin/env perl
use strict;
use warnings;
my $hi = "First hi";
print "$hi\n";
{
my $hi = "Second hi";
print "$hi\n";
}
print "$hi\n";
このスクリプトを実行すると、次の出力が得られますが、特に警告は表示されません。
First hi
Second hi
First hi
2 番目の変数を囲む中括弧を削除し$hi
て、最初の変数と同じスコープにすると、次の$hi
警告が表示されます。
"my" variable $hi masks earlier declaration in same scope at hi.pl
ただし、変数が同じスコープにない場合でも、この警告が必要です。変数名が別の変数名を隠しているたびに警告が必要です。この警告を有効にするにはどうすればよいですか? これについて警告する、有効にできる Perl Critic ポリシーはありますか?