sub mk_data_accessors2 { my $path = shift; for my $_ (@_) { eval qq{ sub $_ { carp "Warning: '$_' takes at most 2 arguments...\n" if \@_ > 2; my \$self = shift; \$self->$path{qw($_)} = shift if \@_; return \$self->$path{qw($_)}; } }; die $@ if $@; } }