jjap has asked for the wisdom of the Perl Monks concerning the following question:
Dear Monks,
The following code selects a few arrays from an AoA which will passed on as arguments to a subroutine.
It does work, but since I receive that AoA through an array reference from a previous sub, would there be a way to have the loop work directly on the arrayref instead of dereferencing the arrayref into a AoA?Any way (if possible elegant) to operate on AoAref directly?use strict; use warnings; use Data::Dumper; my @AoA = ([10001, 2.71, 4], [160001, 123.4, 5], [170001, 234.9, 9], [ +670002, 44.8, 11]); # data structure actually received as ref my $AoAref = \@AoA; my ($arg1, $arg2, $arg3); # AoA is OK print Dumper ($AoAref); for my $i (0 .. $#AoA){ my $aref = $AoA[$i]; print "array is: $AoA[$i]\n"; $arg1 = $AoA[$i] if ($AoA[$i][0] == "160001"); $arg2 = $AoA[$i] if ($AoA[$i][0] == "170001"); $arg3 = $AoA[$i] if ($AoA[$i][0] == "670002"); } # Checking that got what is expected, OK print "Ex.:argument1 $arg1\n"; print "argument deref @$arg1\n"; # Passing to &someothersub($arg1, $arg2, $arg3);
The Cookbook and perllol do not seem to address that specificallyfor my $aref ( @$AoAref ) { print "\t [ @$aref ],"; # not exactly sure what i'm doing here... }
Again all guidance and advice will be greatly appreciated
UpdateThanks to Ikegami for yet another masterful tutorial and to Util for also a very Perlish solution.
Back to
Seekers of Perl Wisdom