my @fields = qw/ name age peers /; for my $name (@fields) { my $code = sub { my $self = shift; $self->{$name} = $_[0] if @_; return $self->{$name}; }; no strict 'refs'; *$name = $code; }