首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fetchrow_hashref还是取杂凑?

fetchrow_hashref还是取杂凑?
EN

Stack Overflow用户
提问于 2016-04-01 14:28:15
回答 1查看 265关注 0票数 0

我想知道是否有人能帮助我解决一个旧perl代码的令人沮丧的问题。我的实际任务是将一个旧的perl脚本从5.10.1版本迁移到5.18.2版本。

所以我已经用脚本做了一些简单的问题,比如错误的调用,糟糕的格式,等等。

但是我粘在一个名为取取散列的函数上,看起来很像fetchrow_hashref;

我打算捕捉Im、Nameserver Im和名称的列表。我的问题是,函数fetchrow_hashref不执行与旧代码中的取取散列相同的操作。

请参阅随附的新代码:

代码语言:javascript
复制
        #fetch_network();
        $res2=$dbh->prepare("select nsip,nsid,nsname from nameservers");
        $res2->execute();

        while (%ns2=$res2->fetchrow_hashref;{
            $nsips{$ns2{nsid}}=$ns2{nsip};
            $nsnames{$ns2{nsid}}=$ns2{nsname};
        }

这张桌子看起来是:

代码语言:javascript
复制
+-----------------+------+------------------------------+
| nsip            | nsid | nsname                       |
+-----------------+------+------------------------------+
| 101.101.111.10  |    1 | ns1.yournameserver.net       |

下面是旧代码的一部分:

代码语言:javascript
复制
$res2=$dbh->query("select nsip,nsid,nsname from nameservers");
while (%ns2=$res2->fetchhash)
{
$nsips{$ns2{nsid}}=$ns2{nsip};
$nsnames{$ns2{nsid}}=$ns2{nsname};
}

所以我试着用fetchrow_hashref,但它对我不起作用:

代码语言:javascript
复制
main::(nsconfgen.pl:170):               while (%ns2=$res2->fetchrow_hashref){
DB<193> n
Reference found where even-sized list expected at nsconfgen.pl line 170.
at nsconfgen.pl line 170.
main::(nsconfgen.pl:171):                     $nsips{$ns2{nsid}}=$ns2{nsip};
DB<193> p $ns2{nsid}

( i've get no value from the hash )

当然,我已经爬过谷歌,我尝试了很多例子,但没有任何帮助,真的.

所以我希望我能在这里得到一些帮助。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-01 14:52:36

DBI实现者中,fetchrow_hashref的返回值是对哈希的引用,而不是哈希。对您的代码进行一些更改就可以得到正确的结果:

代码语言:javascript
复制
    while ($ns2=$res2->fetchrow_hashref) {
        $nsips{$ns2->{nsid}}=$ns2->{nsip};
        $nsnames{$ns2->{nsid}}=$ns2->{nsname};
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36358911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档