package Foo; sub Foo::callbacks::pig { ... } # no more hash! sub Foo::callbacks::cat { ... } sub Foo::callbacks::dog { ... } while (...) { # do stuff $choice = ...; # of course, we also validate $choice no strict 'refs'; &{"Foo::callbacks::$choice"}(@args); # I feel so dirty! } package main; ## now extend Foo by doing this: use Foo; sub Foo::callbacks::iguana { ... }