X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=moose-class%2Fexercises%2Flib%2FPerson.pm;fp=moose-class%2Fexercises%2Flib%2FPerson.pm;h=3f3fc46fcca0dd373ab1c89a84c97a2792d77ded;hb=78204667be8035e186f28ab73d48f82e6799408d;hp=9ec8c1bca2c09324c21238487e699ac23fd47e3f;hpb=9f39aa0852fec9140ef64cef3e128d8bbb6f05fd;p=gitmo%2Fmoose-presentations.git diff --git a/moose-class/exercises/lib/Person.pm b/moose-class/exercises/lib/Person.pm index 9ec8c1b..3f3fc46 100644 --- a/moose-class/exercises/lib/Person.pm +++ b/moose-class/exercises/lib/Person.pm @@ -1,4 +1,30 @@ package Person; +use Moose; + +use namespace::clean -except => "meta"; + +has [qw(first_name last_name)] => ( + is => "rw", + required => 1, +); + +sub full_name { + my $self = shift; + $self->first_name . " " . $self->last_name; +} + +override BUILDARGS => sub { + my ( $self, @args ) = @_; + + if ( @args == 1 and ref $args[0] eq 'ARRAY' ) { + my %p; @p{qw(first_name last_name)} = @{ $args[0] }; + return \%p; + } else { + return super; + } +}; + +__PACKAGE__->meta->make_immutable; 1;