2011-06-22 87 views
3

有沒有辦法增加Perl中警告的詳細程度? 我用它來產生警告。增加Perl警告的詳細程度

#!/usr/bin/perl -w 

我對偶爾碰到的以下內容特別感興趣。反正Perl有打印未初始化變量的名字嗎?

Use of uninitialized value in printf at ./script.pl line 106, <LOG> line 323805. 

回答

9

它會嘗試,如果你升級到Perl 5.10或更高版本。 5.14是最新的。

2

正如friedo說的那樣,聽起來好像你有一個老版本的perl。然而,使用print進行調試相當簡單,並且需要注意一個很好的「低技術」技術。如果你有一個線,如:

printf "%-10s %-10s %s %s", $var1, $var2, @array; 

,你會得到一個警告,是很難的地方,任何一個變量,你可以隨時把它分解了起來:

printf "%-10s ", $var1; 
printf "%-10s ", $var2; 
printf "%s %s", @array; 

然後你會得到一個更具體警告。

或者你可以得到一個小創意,做:

sub no_undef { 
    my @return; 
    push @return, map { defined $_ || "undef" } @_; 
    return @return; 
} 
printf "%-10s %-10s %s %s", no_undef($var1, $var2, @array);