[英]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.