package Tie::RecursiveCI; use strict; use Tie::CaseInsensitive; use vars qw( @ISA ); @ISA = qw( Tie::CaseInsensitive ); sub STORE { my ($self, $key, $value) = @_; $self->{lc $key} = $value; if (UNIVERSAL::isa($value,'HASH')) { tie %{ $self->{lc $key} }, 'Tie::RecursiveCI'; } return $self->{lc $key}; }