我不习惯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值有效。
感谢。
答案 0 :(得分:4)
如果$ rs未定义,则必须是因为匹配“$rs =~ m!([0-9,]+) +EUR!;
”失败,而$1
未定义。添加一些战略性印刷报表应该会有所帮助。
答案 1 :(得分:1)
如果错误在行
$rs =~ s!.*Unit Price Excl. VAT!!s;
然后sendRequest
失败,导致$rs
未定义。
错误也可能在最后一次替换上,这意味着先前的匹配失败。在条件语句中包装匹配以确保。
if ( $rs =~ m!([0-9,]+) +EUR! ) {
$rs = $1;
} else {
die "no matching";
}