我正在编写一个Perl脚本,该脚本需要在调用外部程序之前设置许多环境变量。我的代码具有以下形式
$ENV{'VAR1'} = "value1";
$ENV{'VAR2'} = "value2";
Run Code Online (Sandbox Code Playgroud)
通过perlcritic运行此程序时,每次此类分配都会收到严重性为4的违规:
^Magic variable "$ENV" should be assigned as "local"
Run Code Online (Sandbox Code Playgroud)
谷歌搜索该错误消息并没有给我任何好的解决方案。在这种情况下,抱怨的过激冲突是Variables :: RequireLocalizedPunctuationVars,给出的示例涉及本地化文件句柄。我试图在Perl最佳实践中找到相关的部分,但它仅涉及本地化软件包变量。
我尝试的一种解决方案是在分配之前使用以下语句本地化%ENV。
local %ENV = ();
Run Code Online (Sandbox Code Playgroud)
这不能解决违规问题。
我的问题如下:
这种Perlcritic违规行为甚至与%ENV的分配相关,还是我可以忽略它?
如果相关,解决它的最佳方法是什么?