Perl: хэш неправильно хранит информацию - PullRequest
0 голосов
/ 15 декабря 2011

У меня странная проблема с хешами / массивами в perl, я читаю некоторые данные, но когда я считываю данные, кажется, что записаны только последние несколько элементов поверх всех записей.

Я попытаюсь продемонстрировать систему ниже, это не точная копия моего кода, поскольку данные, которые я использую, являются конфиденциальными:

значение $ data [6] может варьироваться, что подтверждает ошибку

my @store = array();
my @data = array(columns1....1000);

# Overall loop
for(my $counter = 0; $i <= $2; $counter++) 
{
   # loop dataset
   for(my $record = 0; $record <= $100; $record++) 
   {


      $store[$counter][$record]->{$data[6]} = $data[100];


    }
}

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Как отметил codaddict в комментарии, у вас есть ошибка в ваших индексах цикла - $2 - это переменная (вероятно, неопределенная), а не целое число 2.

Однако в Perl обычно используется запах кода для использования явных индексов массивов. Вместо этого вы должны построить свою структуру данных более естественным образом:

my @store = map {
    [
        map {
            # some logic here which fills in the second dimension of data        
        } (1..100);
    ]
} (1..2);
0 голосов
/ 15 декабря 2011

Похоже, вы храните ссылку на $data[$record], а не на значение.

Если ваши данные хранят ссылки на скаляр, то $$data[$record] будет разыменовывать , аналогично @{data[$record]} и %{data[$record]} для массивов и хэшей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...