tie my %h, Tie::Hash::DefaultVal => "default-val"; %h = ( foo => "foo-val", bar => "bar-val" ); print "\$h{$_} = $h{$_}\n" for qw[ foo bar nonexistant ]; __OUTPUT__ $h{foo} = foo-val $h{bar} = bar-val $h{nonexistant} = default-val