这段代码:
my @sorted_models = sort {
UnixDate($a->{'year'}, "%o") <=>
UnixDate($b->{'year'}, "%o")
} values %{$args{car_models}};
不断产生以下错误警告:
在 /.../Date/Manip.pm 第 244 行使用未初始化的长度值。
Date::Manip是一个 CPAN 模块。Date::Manip 的第 244 行位于以下代码块中:
# 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";
但是然后在代码块之前包括这个(将实际的 Unix Date 值打印到记录器中的控制台)以对值进行排序:
foreach (values %{$args{car_models}}) {
$g_logger->info(UnixDate($_->{'year'},"%o"));
}
完全删除了错误警告。为什么?除了执行所有这些日志记录语句之外,还有什么好的解决方法?
注意:没有一个排序值是未定义的,因为当我在记录器中打印它们时,我可以看到它们中的每一个都有一个数值。