2

これは、同じ名前の 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 ポリシーはありますか?

4

1 に答える 1

2

これを試しましたか:

Perl::Critic::Policy::Variables::ProhibitReusedNames;

于 2014-08-14T09:28:49.440 に答える