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;
####
package MyFoo;
use MyMakeMethods (
new => { name => 'new', required => 'x y' },
get_set => 'x y z',
);
1;
####
package main;
use MyFoo;
my $foo = MyFoo->new( x => 'Xerces', y => 'Yes' );