package Person;

use Moose;

has first_name => ( is => 'rw' );
has last_name  => ( is => 'rw' );

sub BUILDARGS {
    my $class = shift;

    if ( @_ == 1 && 'ARRAY' eq ref $_[0] ) {
        return {
            first_name => $_[0]->[0],
            last_name  => $_[0]->[1],
        };
    }
    else {
        return $class->SUPER::BUILDARGS(@_);
    }
}

sub full_name {
    my $self = shift;

    return join q{ }, $self->first_name, $self->last_name;
}

no Moose;

__PACKAGE__->meta->make_immutable;

1;
