my %HoH = ...; sub updatename { my ($keyname, $keysubname, $keyvalue) = @_; $HoH{$keyname}{$keysubname} = $keyvalue; } updatename("flintstones", "husband", "joe"); # or # updatename(flintstones => husband => "joe"); #### package NeedsABetterName; my %HoH = ...; sub new { my $class = shift; return bless \\%HoH, $class; } sub updatename { my ($self, $keyname, $keysubname, $keyvalue) = @_; $$self->{$keyname}{$keysubname} = $keyvalue; } my $obj = NeedsABetterName->new(); $obj->updatename("flintstones", "husband", "joe"); # or # $obj->updatename(flintstones => husband => "joe");