use strict; use warnings; use Tie::IxHash; use Data::Dumper; my %big_hash = ( 'part_1' => tie_me_up(first => 1, second => 2, third => 3), 'part_2' => tie_me_up(foo => 1, bar => 2, baz => 3), 'part_3' => tie_me_up(oranges => 1, apples => 2, lemons => 3), ); print Dumper(\%big_hash); sub tie_me_up { tie my %temp, 'Tie::IxHash'; %temp = @_; return \%temp; }