関連/重複の可能性:Date :: ManipのsortByLengthを使用すると、「初期化されていない値」の警告が表示されるのはなぜですか?
このコードブロック:
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日付値をロガーのコンソールに出力する):
foreach (values %{$args{car_models}}) {
$g_logger->info(UnixDate($_->{'year'},"%o"));
}
エラー警告を完全に削除しました。なんで?そして、これらすべてのロギングステートメントを実行する代わりに良い修正は何ですか?
注:ロガーで印刷したときに、すべての値に数値があることがわかったため、並べ替えられた値はいずれも未定義ではありません。