--- in FOO/Bar/Baz.pm my %function_table; sub set_callback { my ($key, $function) = @_; $function_table{$key} = $function; } sub some_function { if (defined $function_table{'login'}) { $function_table{'login'}->(); } else { die "No callback declared for login"; } } --- in FOO/Bar.pl use FOO::Bar; sub login { } FOO::Bar->set_callback('login', \&login);