You have two problems. One has been addressed in other replies, on your way to pass the parameter to the local, lexical variable.
But a second problem is that prototypes change the way you have to call your sub. With a prototype \%, perl wants you to pass in a hash, and it will pass on a reference to it to the sub. So the call should look like:
get_conf(%cur_conf);
With that additional change, your code runs as expected, on my system (perl 5.6.1).
Similar, with a prototype \@, you must pass in an array, not an array reference:
sub mypush (\@@) {
my $aref = shift;
push @$aref, @_;
}
@a = (1);
mypush @a, 2, 3, 4;
print "@a\n";
Resulting in: 1 2 3 4
|