[vox-tech] perl: function with hash and scalar args
Jay Strauss
me at heyjay.com
Thu Jun 24 19:35:30 PDT 2004
> this clears up another mystery for me. perl was complaining about an
> "odd number of elements in the hash" (in my real code). now i understand
> why (although i'm at a loss why i didn't get the same "odd number of
> hash element" message in the test code i posted).
>
> after changing my (real) code, everything works. i had momentary
> confusion when i was able to "dereference" the hash with $hash{foo}
> instead of $$hashref{foo}, but then i realized that my hash was declared
> outside of any functions, and so was global (which is exactly what i'm
> changing right now and got me in trouble with argument lists).
>
> thanks for you help!
>
For the sake of TMTOWTDIness
I'll suggest one more way. Switch the order of the args like:
{
my $scalar = "stuff";
my %hash = (key1=>'stuff1', key2=>'stuff2')
somefunc($scalar, %hash);
}
sub somefunc{
my $scalar = shift;
my %hash = @_;
#do stuff with hash
}
If you're not a speed freak, and you know the number of args isn't
going to be changing, then you don't have to use a reference
Jay
More information about the vox-tech
mailing list