如何禁用警告?

Eug*_*kov 3 perl

我有警告:

"my" variable $subject masks earlier declaration in same scope at ...
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过no warnings 'all'编译指示禁用警告,但找不到适合我的警告类型的类别

如何仅禁用此类警告?

mob*_*mob 10

搜索perldoc perldiag您的警告消息。这个出现

"%s" 变量 &%s 掩盖了同一 %s 中的先前声明

(W shadow) 在当前作用域或语句中重新声明了“我的”、“我们的”或“状态”变量,有效地消除了对前一个实例的所有访问。这几乎总是一个印刷错误。请注意,较早的变量将一直存在,直到作用域结束或直到对它的所有闭包引用都被销毁。

它告诉您禁用此特定警告的编译指示是

no warnings 'shadow';
Run Code Online (Sandbox Code Playgroud)


Dav*_*oss 5

如何仅禁用此类警告?

请不要这样做。修复导致错误的错误是一个更好的主意。

你已经声明$subject两次了。从第二个声明中删除my或更改第二个变量的名称。我对你的代码一无所知,所以我无法建议你哪种方法最好。

  • 或者限制变量的范围(通过将代码移动到块或子块中)。 (4认同)