in reply to Re: Newbie: parentheses, map, etc.
in thread Newbie: parentheses, map, etc.

The substitution operator s returns the list of captured substrings or, in scalar context, the number of captured substrings, which is 1.

This isn't true. s/// always returns the number of substitutions made or the empty string if no substitutions were made (see perlop). The expression in map is in list context.

Replies are listed 'Best First'.
Re^3: Newbie: parentheses, map, etc.
by ysth (Canon) on Mar 04, 2008 at 06:49 UTC
    The documentation lies. On failure, it returns the canonical false value, which is an empty string in string context and 0 in numeric context.

      Upon first reading this, I thought, "what's the difference?" More to the point, "how does one behave differently from the other?" After all, an empty string in a numeric context is zero anyway. How would one ever see the difference?

      Some time later, the answer popped into my head. A string turned number will trigger warnings, but s/// won't. I verified this in the Test::More fashion.

      Thanks for the food for thought.