The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Data::Model::Accessor;
use strict;
use warnings;

sub mk_accessors {
    my $class = shift;
    for my $field (@_) {
        no strict 'refs';
        *{"$class\::$field"} = sub {
            return $_[0]->{$field} unless @_ > 1;
            my $self = shift;
            $self->{$field} = (@_ == 1 ? $_[0] : [@_]);
        };
    }
}

1;