Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^4: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs?

by vsespb (Hermit)
on Sep 26, 2013 at 11:45 UTC ( #1055822=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs?
in thread Why doesn't Perl provide %_ as the hash equivalent of @_ in subs?

that doesn't mean the magic variable should not be provided at all, it just means it should be read-only.
That looks like inconsistency to me.
sub f1 { my ($x, $y) = @_; z($x, $y); }
and
sub f2 { z($_[0], $_[1]); }

Above two examples are not identical. Later one is something low-level, and it's just asking for trouble (for example in cases like f2($1), f2($.) or f2($x, $x) when z() modifies arguments ).
(NOTE: another common point of view is that caller of such functions is asking for trouble)

Example:
sub z { $_[0]++; print $_[1] } sub f1 { my ($x, $y) = @_; z($x, $y); } my $x = 4; f1($x, $x);
prints 4
sub z { $_[0]++; print $_[1] } sub f2 { z($_[0], $_[1]); } my $x = 4; f2($x, $x);
prints 5

So IMHO you should not use @_ just because it's shortest. Use it when you know what you're doing.

And now you suggest add another %_ which behaves completely different way.

Also making %_ readonly won't help much in cases when you pass magic variable as argument (example: RT#54728).


Comment on Re^4: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1055822]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (15)
As of 2015-07-01 17:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (13 votes), past polls