The best way to do this generally is to pass in an anonymous sub which executes the sub with the desired arguments e.g
sub print_me {
my $arg = shift || "Hello World!\n";
print $arg;
}
%hash = (
no_arg => \&print_me,
with_arg => sub { print_me("Hello World, again!\n") },
);
$hash{no_arg}->();
$hash{with_arg}->();
__output__
Hello World!
Hello World, again!
Also, you want parens, not curly braces when assigning to a hash as curly braces will return a single element of an anonymous hash reference, whereas using parens will return a list (in this case) which will duely populate
%hash. See.
perlreftut and
tye's
References quick reference for more info.
HTH
_________
broquaint