package Base; use strict; use warnings; use fields qw( _f ); sub new { my Base $self = shift; if ( !ref $self ) { $self = fields::new( $self ); } $self->{_f} = 'base'; return $self; } sub base { my Base $self = shift; $self->{_f}; } sub set_base { my Base $self = shift; $self->{_f} = shift; } 1;