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

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -