my $monitor = new Monitor; $monitor->add_function("3","blah"); package Function; sub blah { if(wantarray){return(qr{blah ?(.+)?})} # Useful code will eventually go here } package Monitor; sub add_function { my($self,$access,$name) = @_; my $ref = \&{"Function::$name"}; my($regexp) = $ref->(); $FUNC{$regexp}{access} = $access; $FUNC{$regexp}{code} = $ref; }