[英]Use of uninitialized value in substitution (s///) error in Perl
我不習慣 Perl 但不得不創建此函數。
sub getPrice {
my $url = shift;
my $prdid = shift;
my $count = shift;
my $totcount = shift;
print "($count/$totcount) Fetching Product Price : $prdid .";
my $rs = sendRequest('GET', $url);
print "url :".$url;
print "..\n";
$rs =~ s!.*Unit Price Excl. VAT!!s;
$rs =~ s!</table>.*!!s;
$rs =~ m!([0-9,]+) +EUR!;
$rs = $1;
$rs =~ s/,/./;
return $rs;
}
當我調用此函數時,出現此錯誤。
Use of uninitialized value in substitution (s///)
錯誤指出$rs =~ s/,/./;
線。
我替換它的方式有什么錯誤嗎?
$url 值有效。
如果 $rs 未定義,那一定是因為匹配“ $rs =~ m,([0-9;]+) +EUR!;
”失敗,導致$1
未定義。 添加一些戰略性的打印語句應該會有所幫助。
如果錯誤在線
$rs =~ s!.*Unit Price Excl. VAT!!s;
然后sendRequest
失敗,導致$rs
未定義。
錯誤也可能在最后一次替換的行上,這意味着先前的匹配失敗。 將匹配項包裝在條件語句中以確保。
if ( $rs =~ m!([0-9,]+) +EUR! ) {
$rs = $1;
} else {
die "no matching";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.