my %h = (
func1 => sub { return sprintf ("0x%x", shift) },
func2 => sub { return sprintf ("%b", shift) },
func3 => sub { return sprintf ("%d", shift) },
);
####
$h{func1}->();
####
my %h = (
func1 => sub {
my $value = shift @_;
return sprintf ("0x%x", $value)
},
func2 => sub {
my $value = shift @_;
return sprintf ("%b", $value);
},
func3 => sub {
my $value = shift @_;
return sprintf ("%d", $value);
},
);
####
sub foo {
# requires an even number of parameters in @_
my %params = @_;
return;
}
# to call:
foo(qw/key1 val1 key2 val2 key3 val3/);
####
sub foo {
# get singular hash reference with any number of key/value pairs
my $params = shift @_; # or alternatively, my $params = $_[0]
# some may want to dereference (I usually don't)
my %params = %$params;
return;
}
# to call:
foo( {'key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3' });
# or without braces,
foo( 'key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3' );