3f3fc46fcca0dd373ab1c89a84c97a2792d77ded
[gitmo/moose-presentations.git] / moose-class / exercises / lib / Person.pm
1 package Person;
2
3 use Moose;
4
5 use namespace::clean -except => "meta";
6
7 has [qw(first_name last_name)] => (
8     is => "rw",
9     required => 1,
10 );
11
12 sub full_name {
13     my $self = shift;
14     $self->first_name . " " . $self->last_name;
15 }
16
17 override BUILDARGS => sub {
18     my ( $self, @args ) = @_;
19
20     if ( @args == 1 and ref $args[0] eq 'ARRAY' ) {
21         my %p; @p{qw(first_name last_name)} = @{ $args[0] };
22         return \%p;
23     } else {
24         return super;
25     }
26 };
27
28 __PACKAGE__->meta->make_immutable;
29
30 1;