Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
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 about the Monastery: (15)
As of 2014-09-18 13:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (116 votes), past polls