为什么我得到“在减法中使用未初始化的值$ number”?

时间:2012-04-30 05:41:07

标签: perl

我正在使用XS绑定到C库的Perl模块。当我构建它时,我收到一条警告消息Use of uninitialized value $num in subtraction (-) at /usr/lib/perl5/vendor_perl/5.14.2/ExtUtils/ParseXS.pm line 1769, <GEN8> line 90.

这是由ExtUtils::Constant生成的代码触发的。在Foo.xs中注释掉INCLUDE: const-xs.inc行会删除警告。但我不知道错误是在ExtUtils::ParseXS还是在ExtUtils :: Constant。

我正在使用ExtUtils :: Constant 0.23,ExtUtils :: ParseXS 3.15,Module :: Build 0.38和Perl 5.14.2。

我已经设法将其削减到合理的small test case,不需要任何外部C库,但它仍然太大而无法在此处发布。我把它放在GitHub repo中。要重现该错误,请克隆存储库,键入perl Build.PL,然后键入./Build。你应该看到:

$ perl Build.PL
Regenerating constants...
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Foo' version '0.01'
$ ./Build 
Building Foo
Use of uninitialized value $num in subtraction ...
gcc ... -o lib/Foo.o lib/Foo.c
ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/Foo/Foo.bs')
gcc ... -o blib/arch/auto/Foo/Foo.so lib/Foo.o

如果你安装了ExtUtils :: Constant,你只能看到“Regenerating constants ...”。你不应该需要它来重现bug,因为我已经将生成的文件添加到了repo。

无论问题是什么,它似乎都没有阻止代码工作,因为包含的测试确实通过了。

更新:我已将此报告为RT#112776。共识似乎是ExtUtils :: ParseXS中的一个错误,但解决方案并不清楚。

0 个答案:

没有答案