As well, in the subroutine, you're assigning a scalar value, when you want a list context:# you're doing: return &Y::module_subroutine($hash_to_send); # should be: return &Y::module_subroutine(%hash_to_send);
These kinds of things are easy to miss, which is why it's recommended to use the strict pragma...It should kick up warning messages in such cases.# you're doing: my($hash) = @_; # should be: my %hash = @_;
Addendum: Also wanted to add that if you're only ever passing a single hash to your subroutine, and it's not going to be an extremely large hash, then passing by value is workable. If you want to pass other parameters, or a massive hash (megabytes worth of data, yes I've seen this done), then you'd want to pass a reference:
# passing it in... return &Y::module_subroutine(\%hash_to_send); # and assigning it within the subroutine... my $hash = shift; # and when using it in the sub, be sure to dereference... return "The colour of the sky is " . $hash->{third_colour};
__________
Systems development is like banging your head against a wall...
It's usually very painful, but if you're persistent, you'll get through it.
In reply to Re: Transferring local hashes to module subroutines
by EvanK
in thread Transferring local hashes to module subroutines
by cowgirl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |