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