sub AUTOLOAD { no strict 'refs'; my ($self, $val) = @_; my ($name) = $AUTOLOAD =~ m/.*::(\w*)/; *{$AUTOLOAD} = sub { return @_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}}; return defined $val ? $self->{$name} = $val : $self->{$name}; }