Perl子程序本地全局问题

The*_*ust 1 perl scope subroutine

对于这个微小的代码,它总是在全局代码块中打印@x的值.如果我不小心在没有'my @x'的情况下初始化子程序中的变量,如何发出警告.我不是子程序中的局部变量@x.

use strict;
use warnings;
my @x=qw/1 2 3/;

&mysub();

sub mysub{

    print "@x";
}
Run Code Online (Sandbox Code Playgroud)

sim*_*que 6

使用常规Perl,你不能这样做.解决方案不是在较小的范围内重用相同的变量名称.


如果要以编程方式强制执行此操作,可以使用Perl :: Critic.策略Perl :: Critic :: Policy :: Variables :: ProhibitReusedNames告诉您是否重用了已在外部作用域中定义的变量名称.