Joe, You might want to check out Damian Conway's book Object Oriented Perl. He shows how to use perl's AUTOLOAD feature to create get/set methods on the fly if they don't exist. This allows you to write get/set methods that have interesting behavior, and leave the simple ones for perl to make up. Here's the example: sub AUTOLOAD { my ( $self, $newval ) = @_; if ($AUTOLOAD =~ /.*::get(_\w+)/ && $self->_accessable( $1, 'read' )) { my $attr_name=$1; *{$AUTOLOAD} = sub { return $_[0]->{$attr_name} }; return $self->{$attr_name}; } elsif ($AUTOLOAD =~ /.*::set(_\w+)/ && $self->_accessable( $1, 'write')) { my $attr_name=$1; *{$AUTOLOAD} = sub { $_[0]->{$attr_name} = $_[1]; return }; return $self->{$attr_name} = $newval; } croak "No such method: $AUTOLOAD"; } The argument I think OO people would have with your get_attribute and set_attribute functions is that it allows access to all of the object's state and allows no extra processing. The methods are providing no extra benefit over the simpler: $object->{fragment}="foo"; print "fragment: ",$object->{fragment},"\n"; -steve