Проблема с Hash of Array - PullRequest
       1

Проблема с Hash of Array

0 голосов
/ 17 февраля 2011

Привет всем У меня проблема в том, что я не могу вернуть значение и ввести хэш массива

sub nextWords{
    for my $language(0 .. $#language )
    {
        my $eng = $db->selectall_arrayref("select word from words
            left outer join language
            on words.languageId = language.languageId
            where words.languageId = $language
            order by word asc
        ;"); # @language[$id] limit 10 offset $currentOffset

        #%returnArray2d = (@language[$language] =>[@$eng] );
        $returnArray2d{@language[$language]} = [@$eng];
    }
    return %returnArray2d;
}

Я не могу вернуть весь список слов

my %newwordsList =NextWords();
    foreach my $key(keys %newwordsList)
    {
        print "here you are 2 : " . $key . "\n";
        for my $ind(0 .. @{$newwordsList{$key}}){
        print "dzo" . $newwordsList{$key}[$ind] . "\n";
    }
}

output: $key ==> 132 not 123

и слово не может быть напечатано .. оно просто печатает некоторые

ARRAY(0x320d514)
ARRAY(0x320d544)
ARRAY(0x320d574)
ARRAY(0x320d5a4)
ARRAY(0x320d5d4)
ARRAY(0x320d604)

Пожалуйста, помогите .. спасибо

1 Ответ

1 голос
/ 17 февраля 2011

Похоже, вы неправильно настраиваете% returnArray2d.

Предполагая, что @language содержит нужные языковые идентификаторы вместо:

$returnArray2d{ @language[$language] } = [@$eng];

Вы захотите это:

$returnArray2d{ $language[$language] } = [@$eng];

Кроме того, вам следует избегать использования одного и того же имени для массива и скалярного значения (это работает, но это сбивает с толку) (см. @Language / $ language в вашем коде).

Наконец, вы правильно выполняете итерацию по каждому ключу% newwordsList, однако вы захотите вычесть 1 из итерации, чтобы не проходить через конец массива:

for my $ind ( 0 .. @{ $newwordsList{$key} } ) {

Должно быть:

for my $ind (0 .. @{ $newwordsList{$key} } - 1) {

Или (как отметил Дэвид в комментариях) вы можете сделать:

for my $ind ( 0 .. $#{ $newwordsList{$key} } ) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...