Larry Wall writes: > In that case we'd have to say that "given" and "for" always require > "-> $x" inside methods, and that $x is never automatically aliased to > $_. But there are other ramifications with switch statements and > exception handlers I have to think through,
In particular, the fact that `map` rebinds $_. Consider: method data () { map { .process($_) } @.array; } Is that calling `$_.process($_)` for each `$_` in [EMAIL PROTECTED], or is it calling `$self.process($_)`? It must be the former, which, given the context, is probably not what was intended (despite the terrible (but unfortunately, typical) naming, we can still tell what the programmer was thinking). `.process` means something else everywhere else in the method, and Perl goes to great lengths to keep it that way, but in this case it's different. And it would be a shame to disallow the use of $_ in map. Disallowing one of the most beautiful areas of Perl, topicalization, in methods would be irritating at best. "Oh, so I can only program in a crappy subset of Perl because I'm in a method?" I don't know about the other programmers here, but just about all my code is in methods. Actually, scanning over my most recent module, *all* my code is in methods, except for the tests. Luke