|
I have an array of strings. I want to wrap each string in quotation marks—that is, to prepend and append a quotation mark to each string—unless the string matches a certain pattern. There are many ways to do this, but I want to know why I'm having trouble doing it with map. Here is some example code: |
my @strings = qw(boy bird FALSE); @strings = map { unless (/FALSE/) { "\"$_\"" }} @strings;
|
I want this to return "boy" "bird" FALSE but it returns "boy" "bird" 1 and I can't quite figure out why. The 1 appears to come from scalar evaluation of unless (/FALSE/), but why? It seems that $_ is being set to 1 at some point, but I don't see why that should be, either. |
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |