perl - Problem with Hash of Array -
hi got problem cannot return value , key in hash of array
sub nextwords{ $language(0 .. $#language ) { $eng = $db->selectall_arrayref("select word words left outer join language on words.languageid = language.languageid words.languageid = $language order word asc ;"); # @language[$id] limit 10 offset $currentoffset #%returnarray2d = (@language[$language] =>[@$eng] ); $returnarray2d{@language[$language]} = [@$eng]; } return %returnarray2d; }
i cannot return list of words
my %newwordslist =nextwords(); foreach $key(keys %newwordslist) { print "here 2 : " . $key . "\n"; $ind(0 .. @{$newwordslist{$key}}){ print "dzo" . $newwordslist{$key}[$ind] . "\n"; } } output: $key ==> 132 not 123
and word cannot printed.. prints some
array(0x320d514) array(0x320d544) array(0x320d574) array(0x320d5a4) array(0x320d5d4) array(0x320d604)
please help..
it looks you're not setting %returnarray2d correctly.
assuming @language contains language ids want, instead of:
$returnarray2d{ @language[$language] } = [@$eng];
you'll want this:
$returnarray2d{ $language[$language] } = [@$eng];
also, should avoid using same name array , scalar value (it works, it's confusing) (see @language / $language in code).
lastly, correctly iterating through each key of %newwordslist, however, want subtract 1 iteration, don't go past end of array:
for $ind ( 0 .. @{ $newwordslist{$key} } ) {
should be:
for $ind (0 .. @{ $newwordslist{$key} } - 1) {
or (as david pointed out in comments), can do:
for $ind ( 0 .. $#{ $newwordslist{$key} } ) {
Comments
Post a Comment