It's not only cool, it's way cool to use qq and qw to populate HoA's.
For your iteration question, try:
foreach $i (0..$#{$animals{pets}}) {
...
}
| [reply] [Watch: Dir/Any] [d/l] [select] |
Or this way -- why bother with indexes at all?
foreach $animal ( @{ $animals{pets} } ) {
push ( @some_animals, $animal );
}
Nobody says perl looks like line-noise any more
kids today don't know what line-noise IS ...
| [reply] [Watch: Dir/Any] [d/l] |
That's true. I tried it that way at first and got unexpected results (the array getting treated as 1 item when I tried to sort and make the elements unique) but it's probably because I was using qq incorrectly to populate the hash in the first place. I should have used qw and the elements would have been separate elements.
| [reply] [Watch: Dir/Any] |
Awesome, that's the ticket. THANKS!
| [reply] [Watch: Dir/Any] |
foreach $i (0..$#{$animals{pets}}) {
...
}
| [reply] [Watch: Dir/Any] [d/l] |
#! perl
use strict;
use warnings;
my %animals =
(
pets => [ qw( cat dog hamster ) ],
non => [ qw( rhino giraffe ) ],
);
for my $i (0 .. $#{ $animals{pets} })
{
print "$i: ", $animals{pets}->[$i], "\n";
}
Output:
1:43 >perl 857_SoPW.pl
0: cat
1: dog
2: hamster
1:43 >
But note that, as Cody Pendant says above, it’s generally better (where possible) to dispense with array indexes altogether.
Hope that helps,
| [reply] [Watch: Dir/Any] [d/l] [select] |