|Perl: the Markov chain saw|
Re^2: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs? (ugly++)by smls (Friar)
|on Sep 27, 2013 at 09:37 UTC||Need Help??|
Yes, it wouldn't make sense to use %_ in most long & complicated routines.
I never intended to suggest that it would become The One True WayTM for accessing subroutine arguments.
I just think it would be a useful additional tool in the Perl developer's toolbox, nicely complementing the existing ones (in particular @_ which it would semantically mirror very closely), to be deployed with discretion.
I myself would use %_ sparingly, just like I currently use direct access to $_ (or, similarly, $_ in foreach loops) sparingly. But sparingly does not mean "never useful"!
In the OP I've already given a use-case that can appear even in big Perl applications, where I think %_ has its place - let me elaborate on that:
Besides @_, the use of %_ as I imagine it can be compared to the use of $_ in foreach loops.
Using $_ instead of $person in that example would entail many of the same or similar disadvantages/problems as the ones that you and other commenters have invoked against the use of %_ in subs.
And yet, Perl does make $_ available as a built-in language feature.
Perl trusts me to make an informed decision when to use $_ and when not. The fact that it can be used in ways that make code unreadable or buggy, wasn't deemed enough of a reason to exclude it from the language.
Why not apply the same principle to %_?