Time::PieceとTime::Secondsを使って日付の比較を行うときに以下のようなコードを書いていてハマリました。

use Time::Piece;
use Time::Seconds;
if ($t1 >localtime + ONE_YEAR) {
# コード
} else {
# コード
}

上記コードでの

localtime + ONE_YEAR

localtime( + ONE_YEAR)

なんですね。。。。
よって

localtime() + ONE_YEAR

と書かないとだめ。
プロトタイプ宣言で

sub localtime ()

となっていれば()つけなくても大丈夫なわけですが、そうでないものは引数を渡さないときは明示的に()をつけておいたほうがよさそうですね。