0
我正在编写一个Perl脚本,它意味着处理一个API,它将返回有关我从MySQL提取的一组URL的度量标准,然后将这些度量标准发回到不同的表中。目前这一段代码:'不是ARRAY参考'错误抛出
my $content = $response->content;
my $jsontext = json_to_perl($content);
my $adsql = 'INSERT INTO moz (url_id,page_authority,domain_authority,links,MozRank_URL,MozRank_Subdomain,external_equity_links) VALUES (?,?,?,?,?,?,?)';
my $adrs = $db->prepare($adsql);
my $adsql2 = 'UPDATE url
SET moz_crawl_date = NOW()
where url_id = ?;';
my $adrs2 = $db->prepare($adsql2);
my $currentUrlId = 0;
foreach my $row (@$jsontext){
$adrs->execute($url_ids[$currentUrlId], $row->{'fmrp'}, $row->{'upa'}, $row->{'pda'}, $row->{'uid'}, $row->{'umrp'}, $row->{'ueid'});# || &die_clean("Couldn't execute\n$adsql\n".$db->errstr."\n");
$adrs2->execute($url_ids[$currentUrlId]);
$currentUrlId++;
}
引发此错误:
Not an ARRAY reference at ./moz2.pl line 124.
这是线124:
foreach my $row (@$jsontext){
这整个的代码块是在while
循环。实际上,我可以迭代几次并在脚本失败之前填充我的MySQL表(从技术上讲,程序可以工作,但我不想只留下一个错误)。
有人有什么建议吗?
当你得到这个错误时'$ content'的值是多少?该错误意味着它不是JSON数组。 – Barmar
换行符,不只是一个建议。 –
要么是散列,要么是看起来像散列的字符串。当我打印出来时,它看起来像这样:[{“fmrp”:6.182095114661029,“fmrr”:8.22438062351392e-08,“pda”:58.91591252161899,“ueid”:5831,“uid”:480143,“umrp”:6.63361336728684 ,“umrr”:1.869832885935372e-08,“upa”:65.70993919657755}] –