package MyMakeMethods; use Class::MakeMethods '-isasubclass'; sub new { map { my $name = $_->{name}; my @required = split ' ', $_->{required}; $name => sub { my ( $class, %params ) = @_; die unless exists $params{$_} foreach ( @required ); bless \%params, $class; } } (shift)->_get_declarations( @_ ); } sub get_set { 'Standard::Hash:scalar' } 1;