But I was having problems and just tried returning the hash ref of each branch.
That's not going to prove very useful, because then in the caller you'd need to assemble the branches again. delete can handle indirection: You can do something like
delete $node->{$doomed_key};
# recurse through remaining elements
I just wanted to assign the hash structure of value into hashdata so I can use the %HashData normally in the main program.
That's fair enough: but you don't need to muck around with copies to achieve that. If in the caller code you have %Hash, and call your function with an argument \%Hash, any changes made indirectly to that data will show up in the caller. This is one of the main features of references.
Do you mean i should use shift?
It's a matter of style, so there will be differing opinions, but generally you can use my ($arg1, $arg2, ...) = @_ to get your parameters. (Sometimes shift is more appropriate, and sometimes even $_[0] etc. are the Right Thing -- but not typically.) |