Commit | Line | Data |
ddd87d75 |
1 | package Person; |
2 | |
78204667 |
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; |
ddd87d75 |
29 | |
30 | 1; |