You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Strawberry Perl安装Win32API::File::Time模块求助

Strawberry Perl安装Win32API::File::Time模块报错解决方法

我全新安装了Strawberry Perl,尝试通过CPAN安装Win32API::File::Time模块时持续报错,报错信息如下:

# 测试失败:'获取的修改时间与stat()一致'
# 在 t\file.t 第90行。
#          实际值: 1635942245
#          期望值: 1635945845
# GetFileTime: 2021年11月3日 周三 08:24:05
#        stat: 2021年11月3日 周三 09:24:05
# 看起来4个测试中失败了1个。
t\file.t ... 可疑,测试返回1 (wstat 256, 0x100)
1/4个子测试失败

测试总结报告
-------------------
t\file.t (Wstat: 256 (退出码1) 测试数:4 失败数:1)
  失败的测试: 1
  非零退出状态:1
文件数=2, 测试数=6,  耗时1秒 (用户时间0.03 + 系统时间0.06 = 总CPU时间0.09)
结果: 失败
1/2个测试程序失败。1/6个子测试失败。
锁文件已移除。
  WYANT/Win32API-File-Time-0.012.tar.gz
  C:\Strawberry\perl\bin\perl.exe ./Build test -- 未通过
//提示// 查看该模块的cpan测试结果,可执行:
  reports WYANT/Win32API-File-Time-0.012.tar.gz
停止执行: 'install' 对 'Win32API::File::Time' 执行失败。
在此命令期间失败:
 WYANT/Win32API-File-Time-0.012.tar.gz        : make_test 不通过

cpan>

问题原因

报错核心是时区不匹配:GetFileTime返回UTC标准时间,而stat返回的是本地时区时间(你的时区为UTC+1),测试用例未处理时区转换逻辑,导致时间戳比对失败。

解决方法

方法1:跳过测试强制安装(最简单)

在CPAN交互shell中执行:

force install Win32API::File::Time

模块本身的功能不受时区问题影响,只是测试用例未适配时区场景,跳过测试即可完成安装。

方法2:修改测试用例后安装

  1. 拉取模块源码到本地目录:
look WYANT/Win32API-File-Time-0.012.tar.gz
  1. 打开t/file.t文件,定位到第90行附近的时间比对代码,添加时区转换逻辑,或者直接注释掉该测试用例。
  2. 执行安装:
perl ./Build install
  1. 退出源码目录:
exit

方法3:同步系统时区(辅助排查)

确保Windows系统时区设置正确,但此方法无法直接解决测试用例的硬编码问题,仅作为基础环境校验步骤。

内容的提问来源于stack exchange,提问作者Rob F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:03:13