use strict; use warnings; sub Handler::edit { my $z = shift; print "in EditHandler, z=$z\n"; return 1; } sub Handler::chmod { my $z = shift; print "in ChmodHandler, z=$z\n"; return 2; } sub invoker { my $handler = shift; exists($Handler::{$handler}) or return -1; &{$Handler::{$handler}}; } # Example calls. invoker("edit", 42); invoker("chmod", 99); invoker("fred", 7); # returns -1