package myclass; use Carp qw(croak); sub new { my ($class, $value) = @_; croak "required value missing" if @_ == 1 or !$value; return bless \$value, $class; } package mysubclass; use base qw(myclass); sub new { my ($class) = @_; return bless $class->SUPER::new(23), $class; } #### package myclass; use Class::Std; my %value :ATTR( :init_arg ); package mysubclass; use base qw(myclass); sub BUILD { my ($self, $ident, $args) = @_; $args->{value} = 23; } #### mysubclass->new; #### Missing initializer label for myclass: 'value'. Fatal error in constructor call