Russ has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

Random synapse firing:
(Thinking of the next "syllabus entry" for some Perl training I do around work)
It occurred to me that Perl has $_ (default variable), @_ ("my" arguments), but there seems to be no %_.

Perl does reserve this symbol, however:

russ@MyLinuxBox:~$ perl -w my %_ = (a => 1, b => 2); Can't use global %_ in "my" at - line 1, near "my %_"
Since I find no mention of it in `man perlvar`, nor in any other man page I've searched...nor in any book I own, this may make an interesting SoPW question.

So, what does it do (if anything)?
Should I avoid using it, and if so, why?


P.S. My intention was to store incoming "named arguments" (see Object Oriented Perl by Damian Conway p. 31) in an idiomatic fashion.

sub mySub{ my %Defaults = (Name => 'Russ', Job => 'Programmer', Language =? 'Perl'); my %_ = (%Defaults, @_); # Warning, this does not compile! ### #(Now use %_ as my argument list) ### print "The name is: $_{Name}\n"; }