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

产生“可能尝试用逗号分隔单词” - 在我想要文字逗号的情况下如何禁用该警告?

4

4 回答 4

16

在本地禁用警告:

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

或者,用逗号分隔那些:

my @flavors = ('sweet,sour', qw/cherry apple berry/);
于 2013-10-24T18:43:11.850 回答
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
);
于 2013-10-24T19:13:32.273 回答
5

只是不要使用qw//许多其他引用运算符之一,与split. q//听起来怎么样?

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

qw//只是一个有用的快捷方式,但从来没有必要使用它。

于 2013-10-24T19:06:19.743 回答
1

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

$SIG{__WARN__} = sub {
    return 
        if $_[0] =~ m{ separate words with commas };
    return CORE::warn @_;
};
于 2013-11-27T17:09:35.530 回答