sub gen_sub { my $self = shift; my $type = shift; my $sub_ref = sub { if (defined $self{$type}) { $value = $self{$type}; return $value; } else { return undef; } } *{"get_$type"} = $sub_ref; }