MongoDB PERL, выдающий ошибку - не может использовать строку в качестве ссылки HASH, когда используются "строгие ссылки" - PullRequest
0 голосов
/ 11 октября 2011

код-

$col1->insert("_id" => '100',
    "results" => {
        "result" => "1",
        "when" => "sunday"  
    }
);  

ошибка-

Can't use string ("100") as a HASH ref while "strict refs" in use at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/MongoDB/Collection.pm line xyz.

Что здесь не так?

1 Ответ

3 голосов
/ 11 октября 2011

Метод insert в MongoDB :: Collection хочет получить хэш-ссылку, а не список. Вы хотите сказать это:

$col1->insert({
    "_id" => '100',
    "results" => {
        "result" => "1",
        "when" => "sunday"  
    }
});

Обратите внимание на ({ и }). Метод insert на самом деле принимает аргументы hash-ref. Так внутри insert он будет делать что-то вроде этого:

my ($self, $obj, $opts) = @_;
if($opts) {
    # Do things like $opts->{multi} ...
}

Но ваш исходный вызов поместит '_id' в $obj и '100' в $opts, и именно отсюда ваше сообщение об ошибке Имейте в виду, что => это просто еще один способ сказать ,, поэтому ваш insert звонок был действительно:

$col1->insert("_id", '100', "results', { ... });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...