package some_package; ... { BEGIN { my @simple_data = qw(name age ...); no strict 'refs'; foreach my $data (@simple_data) { *{$data} = sub { my $self = shift; my ($value) = @_; if ( defined $value ) { $self->{$data} = $value; } return $self->{$data}; } } use strict; }