MongoDB PERL给出错误 - 在使用“strict refs”时,不能将字符串用作HASH引用

时间:2011-10-11 04:51:31

标签: perl mongodb

代码 -

$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 个答案:

答案 0 :(得分:3)

insert method in MongoDB::Collection想要一个hash-ref,而不是一个列表。你想这样说:

$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', { ... });