Class::Trait->apply( $some_class, $some_trait );
my $build_class_sub = $some_trait->can('build_class');
$build_class_sub->($some_class);
####
sub build_class {
my ($class) = @_;
$class->mk_accessors( qw(smb_hostname) );
$class->mk_accessors( qw(smb_username) );
...
}
####
sub build_class {
my ($class) = @_;
my $destructor = sub {
my ($this) = @_;
delete $is_selected{ get_obj_id($this) };
};
$class->register_destructor($destructor);
}
####
sub logpath {
my ($this) = @_;
return File::Spec->rel2abs( join( '-', split /::/, __PACKAGE__ ) . '.log',
$this->log_root );
}
####
sub preapply {
my ($class) = @_;
*logpath = sub {
my ($this) = @_;
return File::Spec->rel2abs( join( '-', split /::/, $class ) . '.log',
$this->log_root );
};
}