{ package My::Class; { use strict; use Class::Std; my %_handler_map :ATTR; # Holds trigger names and states. # ... further down # =========================================================================== # METHOD: register_handler(%registration_hash) # REQUIRES: A hash with the following parameters ... # trigger: The state which triggers the handler. # handler: The name space string (Triggered::Handler) which is triggered. # RETURNS: # true: If the trigger and handler both are present and are stored. # false: If the trigger or handler are not valid (present). # other: An error is thrown if the trigger and handler are valid but # but they do not get stored. # # PURPOSE: Register state handlers and triggers. # --------------------------------------------------------------------------- sub register_state { my ($self, %arguments) = @_; my $trigger = $arguments{'trigger'} || return(undef()); my $handler = $arguments{'handler'} || return(undef()); # ... Here is the part I am having problems with. $_handler_map{ident($self)}{$trigger} = $handler; # Do error checking here. Throw an error if needed. return(1); } } } my $state_arguments = { 'form_data' => {} }; my $state_manager = My::Class->new($state_arguments); $state_manager->register_state( 'trigger' => 'welcome', 'handler' => 'Handler::Welcome', )