如何可能在从日期/ Manip.pm代码块日期:: MANIP模块:
#*Get rid of a problem with old versions of perl
no strict "vars";
# This sorts from longest to shortest element
sub sortByLength {
return (length $b <=> length $a);
}
use strict "vars";
我得到这样的警告:
Use of uninitialized value in length at /perl/lib/perl5.8/Date/Manip.pm line 244.
这个问题实际上并不设在那里; 该功能只被称为无效的(民主)参数。 为了得到它来自哪里更好的跟踪,试试这个:
$SIG{__WARN__} = sub {
require Carp;
Carp::confess("Warning: $_[0]");
};
这将打印堆栈跟踪的所有警告。
无论是$a
或$b
是联合国民主基金。 检查你喂养到使用这个子程序,看看你是否有一个明确的值排序列表。
你如何使用这个代码?
如果启用了未初始化诊断警告(可能通过毯-w
或use warnings;
),如果sortByLength以某种方式被称为正常的子程序,而不是作为一个sort {}
功能,你可能会看到这样的错误:
$ perl -Mwarnings=uninitialized -e 'sub sbl { (length $b <=> length $a) } sbl'
Use of uninitialized value in length at -e line 1.
Use of uninitialized value in length at -e line 1.
在这里,我得到两个警告,因为这两个$a
和$b
是未初始化的。 很难说没有更多的上下文。
文章来源: Why do I get “uninitialized value” warnings when I use Date::Manip's sortByLength?