I think that the line
is a dead giveaway that you should be using an HoH (or even an AoH). By naming your indices you are inadvertently revealing a secret desire to use meaningfully named keys instead. Go for it:my ($idx_color, $idx_fruit) = (0,1);
...and here's your slice:my $hoh = { keyone => { color => 'green', fruit => 'apple' }, keytwo => { color => 'purple', fruit => 'plum' } };
Actually, since you are using such nondescript names for your first keys, maybe an AoH is most suitable:my ( $color, $fruit ) = @{ $hoh->{ keytwo } }{ qw( color fruit ) };
Granted, come initialization time it gets annoying to re-type the names of the keys so many times. Here's one possible way to avoid that, again featuring slices galore:my $aoh = [ { color => 'green', fruit => 'apple' }, { color => 'purple', fruit => 'plum' }, ]; my ( $color, $fruit ) = @{ $aoh->[ 1 ] }{ qw( color fruit ) };
my @fields = qw( color fruit ); my $aoh; @{ $aoh->[ @$aoh ] }{ @fields } = @$_ for ( [ qw( green apple ) ], [ qw( purple plum ) ] );
the lowliest monk
In reply to Re: HOA with array slice?
by tlm
in thread HOA with array slice?
by tphyahoo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |