my @tokens= qw( $ \# ; \, if else else\ if );
# '$' '#' ';' ',' 'if' 'else' 'else if'
The warning should be changed to:
Unescaped ',', '#', or '\' in qw ...
The trick is what level of deference to provide for backward compatibility of unlikely constructs. Silently changing the interpretation of
qw( / - \ | ) would be bad. So I'd make qw( \ ) warn for
a while before supporting escaped whitespace characters. I don't expect
to find \# nor \, inside qw in existing code but
maybe qw( \\ ) is slightly more common? That'd be the tough one
to deal with.
Maybe just add qqw() that supports escaping? I'd like to be able to even
use \n, \t, and \x3e type constructs in qw() on rare occasions.
I guess the current "fix" for the warnings is either
no warnings 'qw'; or qw( . ? ! ), ',', qw( ; : ).
I dislike the former as it can't distinguish the comma I meant to
escape from the comma I slipped in by accident. So I tend to quickly
end up replacing qw with quoted strings.
Actually, I'd like qqw to ignore /\s#(\s[^\n]*)?\n/ as
my desire to add comments is a common reason I end up replacing qw
with quoted strings.
|