in reply to
passing paramters to a sub
Other monks have already pointed you in the right direction with passing structures by reference.
I just want to point out that it is possible not to pass by reference for your benefit.
A simple hash basically has keys and corresponding values. Knowning this, you can write your code like this:
my $v = pop;
my %h = @_; # %hash was expanded into list of key-value pairs
# reconstruct hash from array of key-value pairs