在qw列表中禁用有关文字逗号的警告

时间:2013-10-24 18:40:32

标签: perl

my @flavors = qw/sweet,sour cherry/;

产生“可能尝试用逗号分隔单词” - 如果我需要文字逗号,如何禁用该警告?

4 个答案:

答案 0 :(得分:16)

在本地停用warnings

my @flavors;
{
    no warnings 'qw';
    @flavors = qw/sweet,sour cherry/;
}

更新:或者,用逗号分隔出来:

my @flavors = ('sweet,sour', qw/cherry apple berry/);

答案 1 :(得分:6)

您可以使用no warnings 'qw';

my @x = do {
   no warnings qw( qw );
   qw(
      a,b
      c
      d
   )
};

不幸的是,这也会禁用#的警告。您可以#标记注释,以消除对该警告的需求。

use syntax qw( qw_comments );

my @x = do {
   no warnings qw( qw );
   qw(
      a,b
      c
      d   # e
   )
};

但禁用该警告是相当愚蠢的。只是为了避免它更容易。

my @x = (
   'a,b',
   'c',
   'd',   # e
);

my @x = (
   'a,b',
   qw( c d ),  # e
);

答案 2 :(得分:5)

不要使用qw//,而是使用其中一个很多其他引用运算符,与split配对。 q//如何发声?

my @flavours = split ' ', q/sweet,sour cherry/;

qw//只是一个有用的快捷方式,但它永远不会必要来使用它。

答案 3 :(得分:1)

在我开发一个以逗号分隔的关键字列表相当普遍的框架的情况下,我选择在信号处理程序中手术抑制这些警告。

$SIG{__WARN__} = sub {
    return 
        if $_[0] =~ m{ separate words with commas };
    return CORE::warn @_;
};