add use of BUILDARGS to exercises for section 01
[gitmo/moose-presentations.git] / moose-class / exercises / answers / 01-classes / Person.pm
1 package Person;
2
3 use Moose;
4
5 has first_name => ( is => 'rw' );
6 has last_name  => ( is => 'rw' );
7
8 sub BUILDARGS {
9     my $class = shift;
10
11     if ( @_ == 1 && 'ARRAY' eq ref $_[0] ) {
12         return {
13             first_name => $_[0]->[0],
14             last_name  => $_[0]->[1],
15         };
16     }
17     else {
18         return $class->SUPER::BUILDARGS(@_);
19     }
20 }
21
22 sub full_name {
23     my $self = shift;
24
25     return join q{ }, $self->first_name, $self->last_name;
26 }
27
28 no Moose;
29
30 __PACKAGE__->meta->make_immutable;
31
32 1;