in reply to can a init function of shell::base be overloaded

According to the docs, the init method is "designed to be overridden by subclasses. The default init method in Shell::Base does nothing."

You override it like any other method:

package My::Shell; use Shell::Base; use base qw(Shell::Base); sub init { my ($self, $args) = @_; ... }