my @flavors;
{
no warnings 'qw';
@flavors = qw/sweet,sour cherry/;
}
ОБНОВЛЕНИЕ: Или выделите их запятыми:
my @flavors = ('sweet,sour', qw/cherry apple berry/);
Ответ 2
Вы можете использовать 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
);
Ответ 3
Просто не используйте qw//, а одно из множества других операторов цитирования, в сочетании с split. Как звучит q//?
my @flavours = split ' ', q/sweet,sour cherry/;
qw// - это просто полезный ярлык, но его никогда не нужно использовать.
Ответ 4
В случае, когда я разрабатывал фреймворк, где списки разделенных запятыми ключевых слов были довольно распространенными, я решил хирургически подавить эти предупреждения в обработчике сигналов.
$SIG{__WARN__} = sub {
return
if $_[0] =~ m{ separate words with commas };
return CORE::warn @_;
};