use strict; use warnings; use Data::Dumper; sub set_hash { my $href = shift; my $val = shift; my @key = @_; $href->{$key[0]}{$key[1]}{$key[2]} = $val; } my %h; set_hash(\%h, 42, 'a', 'b', 'c'); set_hash(\%h, 69, 'x', 'y', 'z'); print Dumper(\%h);