use Tie::IxHash sub ordered_hash_ref { tie my %hash, 'Tie::IxHash', @_; return \%hash; } # time passes... tie my %data, 'Tie::IxHash', 1 => ordered_hash_ref( 6 => ordered_hash_ref( width => 53, len => 16, width_arr => [ 53 ], mems => 1, rows => 1 mux => 4, len_arr => [ 16 ], cols => 1, ), ), ;