use strict; use warnings; package Exam::ATC; sub new { my $class = shift; my %attribs = @_; my $href = {}; $href->{var1} = 'this is set in new'; foreach my $key ( keys %attribs ) { $href->{$key} = $attribs{$key}; } my $obj = bless( $href, $class ); return $obj; } sub get_value { my ( $self, $k ) = @_; $k ||= q{a}; return $self->{$k}; } sub set_value { my ( $self, $k, $v ) = @_; if ( defined($v) ) { $self->{$k} = $v; } else { delete( $self->{$k} ); } } 1;