簡體   English   中英

在 Perl 中的替換 (s///) 錯誤中使用未初始化的值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM