Regex 在Perl中的替换(s//)错误中使用未初始化值
我不习惯Perl,但必须创建这个函数Regex 在Perl中的替换(s//)错误中使用未初始化值,regex,perl,Regex,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
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;
}
错误指出了$rs=~s/,/代码>行
我替换它的方式有错误吗
$url值有效。如果未定义$rs,则它必须是因为匹配“$rs=~m!([0-9,]+)+EUR!;
”失败,导致未定义$1
。添加一些战略性的打印语句应该会有所帮助。如果$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";
}
如果错误在线路上
$rs =~ s!.*Unit Price Excl. VAT!!s;
然后sendRequest
失败,导致$rs
未定义
错误也可能出现在最后一次替换的第行,这意味着之前的匹配失败。将匹配项包装在条件语句中以确保
if ( $rs =~ m!([0-9,]+) +EUR! ) {
$rs = $1;
} else {
die "no matching";
}
注意,先前的替换可能也失败了;这不会导致任何警告。请注意,早期的替换可能也失败了;这不会导致任何警告。