gpt4 book ai didi

perl - 为什么我从 Perl 收到 "Day too big"错误?

转载 作者:行者123 更新时间:2023-12-01 10:14:34 25 4
gpt4 key购买 nike

我一直在帮助某人调试一些错误消息为“Day too big”的代码。我知道这源于本地时间和 Y2038 错误(大多数谷歌搜索结果似乎是人们在处理 cookie 在未来很长一段时间内过期)。

我们似乎已经通过使用时间获取当前日期来“解决”了这个问题。然而,鉴于我们的原始日期都不应该达到 2038 年的问题,我怀疑我们是否真的解决了这个问题......

有没有其他人知道在哪里会出现“day too big”?

操作系统是 Solaris。

示例代码 - 实际代码非常大,与我一起工作的人实际上并没有隔离有问题的部分(这就是为什么我担心“修复”实际上不是修复)。如果我可以将重现问题的简明扼要放在一起,我会发布!

更新

我隔离了一段代码,在所有内容周围放置了一些打印语句并解决了问题......

有问题的代码行是:

$temp = str2time(localtime());

这通常(但不总是)将 $temp 设置为 undef。事实证明,即使设置了 $temp,它也没有设置为预期值。

问题是 localtime() 在大多数情况下返回一个数组……这就是对 str2time 的调用造成困惑的原因。

将其更改为:

$ltime = localtime;
$temp = str2time($ltime);

问题消失了。

当然,更好的是,只需使用:

$temp = time;

最佳答案

Time::Local 包中有一条“Day too big”消息。源代码是here如果您想进一步调查。

Carp::Always模块在这里可能会有帮助。运行有问题的代码

perl -MCarp::Always script.pl arg1 arg2 ...

无论您之前收到警告,现在您都将获得完整的堆栈跟踪。

关于perl - 为什么我从 Perl 收到 "Day too big"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2542893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com