如何抑制Perl函数的警告?

如何抑制Perl函数的警告?,第1张

概述在 PHP中,您可以在函数调用前使用@来抑制返回的警告. Perl中有类似的东西吗? PHP的这个功能很疯狂,应该尽可能避免. Perl有两种​​例外:致命错误和警告.警告可以由Perl本身发出,也可以由用户代码发出. 在某个静态/词法范围内,Perl的内置警告可以关闭,如: use warnings;foo();sub foo { no warnings 'uninitialized 在 PHP中,您可以在函数调用前使用@来抑制返回的警告.

Perl中有类似的东西吗?

解决方法 PHP的这个功能很疯狂,应该尽可能避免.

Perl有两种​​例外:致命错误和警告.警告可以由Perl本身发出,也可以由用户代码发出.

在某个静态/词法范围内,Perl的内置警告可以关闭,如:

use warnings;foo();sub foo {  no warnings 'uninitialized';  # recommended: only switch of specific categorIEs  warn "hello\n";  1 + undef;  # Otherwise: Use of uninitialized value in addition (+)}

输出:你好STDERR.

但这不能用于从您调用的代码中删除警告(动态范围).这也不会使用户定义的警告静音.

在这种情况下,您可以为__WARN__伪信号编写处理程序:

use warnings;{  local $SIG{__WARN__} = sub { };  foo();  print "bye\n";}sub foo {  warn "hello\n";  1 + undef;}

输出:在STDOUT上再见.

我们可以把它抽象成一个函数套接字:

sub muffle {  my $func = shift;  local $SIG{__WARN__} = sub { };  return $func->(@_);}muffle(\&foo,1,2,3); # foo(1,3)

然而,这是一件令人难以置信的愚蠢行为:

>警告指出潜在的问题和错误.修复那些而不是忽略它们.
>对于您不感兴趣的类别,请勿首先激活内置警告.很多人都非常高兴unf值字符串化为空字符串,并且不希望任何警告.

这里概述的策略不处理致命异常,而是使用Try::Tiny.

总结

以上是内存溢出为你收集整理的如何抑制Perl函数的警告?全部内容,希望文章能够帮你解决如何抑制Perl函数的警告?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1268646.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存