my %hash = ( run1 => {SUB => \&tmp, DES => 'Print Hello'}, run2 => {SUB => \&tmp2, DES => 'Print Bye'}, ); foreach(keys %hash) { print "Running: $hash{$_}->{SUB}\n"; &{$hash{$_}{SUB}}; } sub tmp { print "Hello\n"; } sub tmp2 { print "Bye\n"; }
[download]
which gives me,
Running: CODE(0x9c84c24) Bye Running: CODE(0x9c84bd0) Hello