为什么我*没有*得到这个警告:“变量掩码早先声明”?

时间:2014-08-14 09:26:05

标签: perl

这是我的整个脚本,精心设计包含两个具有相同名称的变量,其中一个掩盖了另一个:

#!/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批评政策会对此发出警告?

1 个答案:

答案 0 :(得分:2)