这是我的整个脚本,精心制作,包括两个变量具有相同的名称,其中一个是掩蔽另一个:
#!/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
如果我删除第二个$hi
变量周围的花括号,使其与第一个$hi
变量处于相同的作用域中,我会得到以下警告:
"my" variable $hi masks earlier declaration in same scope at hi.pl
但是,即使变量不在同一作用域中,我也希望得到此警告。每当变量名隐藏另一个变量时,我都希望得到此警告。如何启用此警告?是否可以启用Perl Critic策略来警告我这一点?
2条答案
按热度按时间daupos2t1#
你试过这个吗:
Perl::Critic::Policy::Variables::ProhibitReusedNames;
z9gpfhce2#
可能的原因是:
可能有道理,而
并不代表。
您也可以提交一个增强请求来获取关于第一种情况的警告(就像gcc对C所做的那样)。