[Neworleans-pm] Tie::Hash::Indexed question

B. Estrade estrabd at mailcan.com
Tue Nov 4 09:20:11 PST 2008


Okay, now I feel silly - I think I found the answer at PerlMonks :)...

http://www.perlmonks.org/?displaytype=print;node_id=485306;replies=1

Cheers,
Brett

On Tue, Nov 04, 2008 at 11:17:14AM -0600, B. Estrade wrote:
> I can't seem to find it via Dr. Google, and before I go to IRC or PM, I wanted to ask here.
> 
> If I use Tie::Hash::Indexed to define an ordered hash, should this apply to all hashes in a nested data structure? The following example does not propagate this to nested hashes:
> 
> #!/bin/env perl
> use strict;
> use Tie::Hash::Index;
> 
> tie my %test, 'Tie::Hash::Indexed';
> %test = ( 1 => { a => 100,
>                  b => 200,
>                  c => 300, },
>           2 => { d => 400,
>                  e => 500,
>                  f => 600, }, 
>           3 => { g => 700,
>                  h => 800,
>                  i => 900, },
>          ); 
> 
> foreach my $key (keys(%test)) {
>   print "$key\n";
>   foreach my $ikey (keys(%{$test{$key}})) {
>     print "  $ikey\n";
>   }
> }
> 
> 1;
> __END__
> 
> The output looks like:
> 
> 1
>   c
>   a
>   b
> 2
>   e
>   d
>   f
> 3
>   h
>   g
>   i
> 
> But I want:
> 
> 1
>   a
>   b
>   c
> 2
>   d
>   e
>   f
> 3
>   h
>   i 
>   j
> 
> And this indicates that the nested hashs are not 'tie'd. Does anyone one know if there is something I can do when 'tie'ing the root hash so that this property is passed down? If not, how would I 'tie' and anonymous hash?
> 
> And before anyone tells me that I should be using an array, note that I am writing up a test for something that doesn't required ordered keys to be expressed. I am trying to work within existing code to generate a "worst-case" hash order, and for that I need to make sure that certain keys are accessed in-order.
> 
> Cheers,
> Brett
> 
> 
> 
> 
> -- 
> B. Estrade
> Louisiana Optical Network Initiative
> +1.225.578.1920 aim: bz743
> :wq
> _______________________________________________
> NewOrleans-pm mailing list
> NewOrleans-pm at pm.org
> http://mail.pm.org/mailman/listinfo/neworleans-pm

-- 
B. Estrade
Louisiana Optical Network Initiative
+1.225.578.1920 aim: bz743
:wq


More information about the NewOrleans-pm mailing list