如何在perl 5.24中关闭“何时实验......”?

时间:2018-03-16 19:36:54

标签: perl

以下代码直接从perldoc.perl.org上的当前perlsyn页面复制。 [我已根据需要添加了初始化和声明以使其运行(并且它按预期工作),但重点是'when'关键字]

Perl 5.24抱怨'何时'进行实验。 很公平,但每次我使用关键字时都不希望看到这个。

没有警告qw(experimental :: when)不起作用 - “未知警告类别......”

我也试过“切换”作为类别

是否有另一种方法来抑制此警告(除了一般禁用警告之外)?

use v5.14;
for ($var) {
    $abc = 1 when /^abc/;
    $def = 1 when /^def/;
    $xyz = 1 when /^xyz/;
    default { $nothing = 1 }
}

2 个答案:

答案 0 :(得分:4)

您可以通过

启用此构造而不发出警告
use experimental 'switch';

或仅通过

禁用“实验性”警告类别
no warnings 'experimental::smartmatch';

(参见full list of available warning categories in perldoc warnings)。

但请注意,smartmatch,givenwhen结构被视为从根本上被破坏,并且正在被删除/重新设计。在其他perl版本上运行该代码时,只需保护警告就会破坏您的代码。

相反,请注意明确拼写此代码:

for ($var) {
    if    (/^abc/) { $abc = 1 }
    elsif (/^def/) { $def = 1 }
    elsif (/^xyz/) { $xyz = 1 }
    else { $nothing = 1 }
}

是的,它更难看,但它也适用于$var和所有Perl5版本的所有值。

答案 1 :(得分:1)

givenwhensmartmatch实验的一部分,因此可以使用以下方法禁用这些警告:

no warnings qw( experimental::smartmatch );