my @flavors = qw/sweet,sour cherry/;
产生“可能尝试用逗号分隔单词” - 如果我需要文字逗号,如何禁用该警告?
答案 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 @_;
};