sub new { # object creation my $class = shift; my $self = { }; bless ($self, $class); # session creation POE::Session -> create( object_states => [ $self => { _start => 'client_start', }, ], ); return $self; } sub client_start { # this is an overwritten method!!! my ($self, $kernel, $heap, $session) = @_[ OBJECT, KERNEL, HEAP, SESSION ]; # child code goes here # [...] # now, access the overwritten parent method $self -> SUPER::client_start( @_ ); }