in reply to Transferring local hashes to module subroutines
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.
|
|---|