package foo; use strict; use warnings; sub new { my $class = shift; my $self = {}; $self->{data} = undef; bless ($self, $class); return $self; } # setter and getter sub data { my ( $self, $attr ) = @_; $self->{'data'}->{$attr} = $attr if (defined($attr)); return $self->{'data'}->{$attr}; } 1; __END__