My Favorite Warnings: qw
When I first came to Perl I thought the qw{}
construction was pretty neat. Give it a bunch of white-space-delimited text and it gives you back a list separated on the blanks. So
say for qw{ Fee fie foe fum! };
prints 'Fee'
, 'fie'
, 'foe'
, and 'fum!'
, each on its own line. But if you add punctuation, and warnings are enabled,
say for qw{ Fee, fie, foe, fum! };
gets you 'Possible attempt to separate words with commas ...'
.
For a while, I was dealing with this using a weird assortment of quoting techniques. But then I discovered how to tell Perl I meant to do that:
no warnings 'qw';
I do not do this by default, simply because it has caught problems when converting lists from more-usual program literals to qr{}
form. For similar reasons I try to restrict the size of the scope of the no warnings
.
There is another diagnostic in this warnings category: 'Possible attempt to put comments in qw() list ...'
. As you can imagine, this is triggered by something like
say for qw{ Fee # First word fie # Second word foe # Third word fum! # Fourth word };
which actually prints sixteen lines rather than four.
Previous entries in this series:
Leave a comment