我正在将一个旧的工具链迁移到一个新的系统,现在我收到了大量的通知given is experimental
或when is experimental
。
$ perl -e 'use v5.10; given (12) { when (12) { print "Hello World" }}'
given is experimental at -e line 1.
when is experimental at -e line 1.
Hello World
我希望我的新系统与旧系统完全兼容。我的意思是完全相同的输出。
有没有一种方法可以静音这些通知,而不触及oneliner或脚本?
2条答案
按热度按时间v8wbuo2f1#
首先,请注意smartmatching will可以以向后不兼容的方式删除或更改。这可能会影响您的
given
语句。要使用
given
+when
而不带警告,需要以下内容:或
experimental为这两个语句提供了快捷方式。
最后,您会问如何在不更改程序的情况下将其添加到您的程序中(大概也不更改Perl)。那就只剩下猴子键盘了。
我不建议你这么做。编写几个一行程序来自动修复动态重写Perl行为的程序要容易得多。
但如果您想朝这个方向发展,最简单的解决方案可能是编写一个
$SIG{__WARN__}
处理程序,过滤掉不需要的警告。(Of当然,如果你的程序已经使用了
$SIG{__WARN__}
,那就不起作用了。)要在不改变程序或单行程序的情况下加载它,你所要做的就是将补丁放在一个模块中,然后告诉Perl按如下方式加载模块:
vaqhlq812#
至少在5.22版本中可以使用。