问题描述
我正在清理代码并从 Perl 脚本中删除了现已弃用的 Forecast::IO
模块。当我这样做时,我开始收到此错误:
[root@server cgi-bin]# perl Weather.pm
Undefined subroutine &B::perlstring called at /usr/local/share/perl5/Params/ValidationCompiler/Compiler.pm line 248.
Compilation Failed in require at /usr/local/lib64/perl5/DateTime.pm line 13.
BEGIN Failed--compilation aborted at /usr/local/lib64/perl5/DateTime.pm line 13.
Compilation Failed in require at Weather.pm line 1340.
BEGIN Failed--compilation aborted at Weather.pm line 1340.
发生错误的第 1340 行是无害的,use DateTime;
。
我不确定 DateTime
会做什么会导致它不高兴我不再使用无关的 Forecast::IO
模块,所以我开始拆开后一个模块找出阻止错误的代码。重要的部分似乎是 Moo
包含在 Forecast::IO
中并且它至少有一个 Moo has
声明:
package Forecast::IO;
use Moo;
has testkey => ( is => 'ro' );
1;
出于某种原因,如果存在至少包含这些行的模块,则 DateTime 加载正常。否则,我上面提到的错误就会发生,在 DateTime 的第 13 行 use Carp;
上窒息。即使我将 use Moo; has testkey => ( is => 'ro' );
放入我自己的模块中,它也会在 use DateTime
处失败。
即使我已经使用 grep -r Forecast::IO
遍历代码库以查找一些错误的引用并得到空的引用。因此,我决定尝试只是加载 DateTime 模块:perl -MDateTime
。这也会产生错误:
[root@server cgi-bin]# perl -MDateTime
Undefined subroutine &B::perlstring called at /usr/local/share/perl5/Params/ValidationCompiler/Compiler.pm line 248.
Compilation Failed in require at /usr/local/lib64/perl5/DateTime.pm line 13.
BEGIN Failed--compilation aborted at /usr/local/lib64/perl5/DateTime.pm line 13.
Compilation Failed in require.
BEGIN Failed--compilation aborted.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)