$nestedhash = { 'REJECTED' => 'REJECTED', 'FREQUENCY' => 'FREQUENCY', 'INCOMING' => { 'DIR' => 'DIR' }, 'CONNECTIONSTRING' => 'CONNECTIONSTRING', 'REGEX' => 'REGEX', 'EMAIL' => { 'GENERAL' => 'GENERAL', 'CRITICAL' => 'CRITICAL', 'SMTPSERVER' => 'SMTPSERVER' }, 'DIR' => ['DIR1', 'DIR2'] }; #### $VAR1 = { 'incoming' => { 'dir' => 'DIR' }, 'frequency' => 'FREQUENCY', 'regex' => 'REGEX', 'rejected' => 'REJECTED', 'dir' => [ 'DIR1', 'DIR2' ], 'connectionstring' => 'CONNECTIONSTRING', 'email' => { 'general' => 'GENERAL', 'critical' => 'CRITICAL', 'smtpserver' => 'SMTPSERVER' } }; #### sub force_uc_hash { my $hashref = shift; foreach my $key (keys %{$hashref} ) { $hashref->{uc($key)} = $hashref->{$key}; force_uc_hash($hashref->{uc($key)}) if ref $hashref->{$key} eq 'HASH'; delete($hashref->{$key}) unless $key eq uc($key); } } sub force_lc_hash { my $hashref = shift; foreach my $key (keys %{$hashref} ) { $hashref->{lc($key)} = $hashref->{$key}; force_lc_hash($hashref->{lc($key)}) if ref $hashref->{$key} eq 'HASH'; delete($hashref->{$key}) unless $key eq lc($key);; } }