laziness, impatience, and hubris PerlMonks

### Re^6: How to return values from a hash?

by perl-diddler (Hermit)
 on Mar 30, 2013 at 14:46 UTC ( #1026276=note: print w/replies, xml ) Need Help??

in reply to Re^5: How to return values from a hash?
in thread How to return values from a hash?

Sorry, that was a last minute change. In order to simplify the code for inclusion here, I left out a trivial optimization where I convert HASH to an integer:
```
use constant Array  => 1;
use constant Hash   => Array << 1;
our %_typemap=(ARRAY=>Array, HASH=>Hash);

sub _Var (\$\$\$;\$) {                          # Wrkhorse code for manu
+fctrd Vars
my (\$__, \$p, \$vn, \$wa)=@\$_;
\$_=\$__;                                   # must not trash '\$_'
my \$v   = \$p->{\$vn};                      # value
my \$rfv = ref \$v;                         # type(ref) of var
my \$rfvi  = \$_typemap{\$rfv} || 0;
if (\$wa && \$wa eq '&#945;') { \$wa=undef, \$addrof=1 }
if (@_ && !\$addrof)  {                    # arg for "setter"
\$arg = shift;
my \$refarg = ref \$arg;                  # ref of the arg
unless ( defined(\$p->{\$vn}) && defined \$arg ){  # unless both de
+fined
\$p->{\$vn} = \$arg;
} elsif (\$rfvi == Array) {              ## if type(var)==ARRAY,
+1 param
if (\$refarg ne "ARRAY" ||  (@\$arg || @\$v)) {
push @{\$p->{\$vn}}, \$_[0];           ## convert to "push"
}
} elsif (\$rfvi == Hash) {
I tried to cut down the amount of code included by cutting out the integer thing...sorry. I didn't want to get dinged for not trying to cut things down...

Create A New User
Node Status?
node history
Node Type: note [id://1026276]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2018-01-23 04:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
How did you see in the new year?

Results (238 votes). Check out past polls.

Notices?