我最近升级到macOS 10.13 High Sierra,不久之后尝试安装更新版本的Perl(5.26.1)时遇到问题。问题的主要原因是在macOS 10.13 High Sierra(家用笔记本电脑)上的自测始终失败,但在macOS 10.12 Sierra(工作笔记本电脑)上成功。
以下是安装日志中显示失败的部分内容:
我无论是使用
以下是安装日志中显示失败的部分内容:
../cpan/Config-Perl-V/t/30_plv5240.t ............................... ok
../cpan/Config-Perl-V/t/31_plv52511.t .............................. ok
../cpan/DB_File/t/db-btree.t ....................................... ok
Use of uninitialized value $value in string eq at t/db-hash.t line 224.
Use of uninitialized value $values[0] in string eq at t/db-hash.t line 224.
Use of uninitialized value $value in lc at t/db-hash.t line 224.
Use of uninitialized value $h{""} in string eq at t/db-hash.t line 243.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value $foo[18] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[36] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[48] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[58] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[59] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[60] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[62] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[63] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[92] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[114] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[140] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[187] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[188] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[189] in join or string at t/db-hash.t line 261.
Use of uninitialized value $h{"Fred"} in string eq at t/db-hash.t line 572.
Use of uninitialized value $v in concatenation (.) or string at t/db-hash.t line 748.
../cpan/DB_File/t/db-hash.t ........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 76/166 subtests
我无论是使用
perlbrew install perl-5.26.1
安装还是手动下载 Perl tarfile 进行安装,都会出现同样的错误。当我尝试调试问题测试文件 t/db-hash.t
时,我可以看到测试哈希表 %h
被创建并在测试文件中进行了填充,但是当我执行 print Dumper(\%h)
时,我发现哈希表似乎具有正确的键,但是所有的值都是 undef
,而不是在测试脚本中分配的值。
这些 undef
值导致了测试失败。奇怪的是,当我打印整个哈希表或尝试制作哈希表值的数组时,未定义的值会出现。如果我要求特定哈希键的值,例如 my $value = $h{key}
,则该值会正常打印。
问题:
- 如何修复此问题以便在 macOS 10.13 上安装新版 Perl?
- 出了什么问题?这在 macOS 10.12 上曾经可行。
perlbug
提交了错误报告。FYI @RickMeasham。 - Jamin Kortegard