use warnings; use strict; use Data::Dumper; use Tie::Hash; package FlatHash; use Data::Dumper; our @ISA = qw(Tie::ExtraHash); sub STORE { my $me = $_[0]; my $key = $_[1]; my $value = $_[2]; $key = lc $key; $_[0][0]{$key} = $value; if(ref $value eq "HASH") { warn Dumper($value); } else { print "This isn't a hash\n"; } } package main; tie my %flat, "FlatHash"; $flat{Monkey}{habits} = "Eating"; $flat{monkey}{habits} = "Scratching"; warn Dumper(\%flat);