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}] –