ali*_*sea 2 perl environment-variables perl-critic
我正在编写一个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的分配相关,还是我可以忽略它?
如果相关,解决它的最佳方法是什么?
过高的警告不是上帝的道。它们只是警告有关如果管理不当可能会给您带来麻烦的情况。
这种Perlcritic违规行为甚至与%ENV的分配相关,还是我可以忽略它?
此警告告诉您:
这与之相关%ENV吗?如果您在程序中产生了多个子进程,请选择“是”。如果以后有人更改您的程序以产生另一个孩子,请选择“是”。
如果相关,解决它的最佳方法是什么?
现在,在这里,人类变得很重要。您需要做出价值判断。
可能的动作:
现在,如果您进行了更改,仍然收到警告,并且认为警告现在有误,则可以执行以下一项或多项操作:
## no critic (RequireLocalizedPunctuationVars)在受影响的行上使用注释,或在相关行之前使用它自己的行。%ENV在.perlcriticrc文件中为其创建例外。| 归档时间: |
|
| 查看次数: |
662 次 |
| 最近记录: |