当我运行以下命令时
D:\05_project>perl xml_export.pl xml_20190626.xml
它从MariaDB生成xml文件。最近6个月效果很好。我在Windows 7/64位上使用了Perl版本 5.28 。
上周,我删除了Perl 5.28,并安装了Perl 5.30 。许多Perl脚本都能正常工作而不会引起问题,但是xml_export.pl
在启动后会中断。首先发生的事情是给出系统错误:
然后在终端上显示以下消息:
Can't load 'C:\PerlLib\lib\perl5/MSWin32-x64-multi-thread/auto/Date/Calc/XS/XS.xs.dll'
for module Date::Calc::XS: load_file:
The specified module could not befound at
C:/Program2/Strawberry/perl/lib/DynaLoader.pm line 193.
at C:\PerlLib\lib\perl5/Date/Calc.pm line 26.
Compilation failed in require at C:\PerlLib\lib\perl5/Date/Calc.pm line 26.
BEGIN failed--compilation aborted at C:\PerlLib\lib\perl5/Date/Calc.pm line 43.
Compilation failed in require at xml_export.pl line 67.
BEGIN failed--compilation aborted at xml_export.pl line 67.
我想知道发生了什么以及如何解决这个问题。软件包Date :: Calc已安装。 Perl安装在驱动器C中,我从驱动器c和d运行perl脚本。如前所述,在安装新版本的Perl之前,我没有任何问题。我重新安装了Perl 5.30,但问题仍然存在。有想法吗?
更新1:
如果我将Date::Calc
中的软件包xml_export.pl
注释掉了
# -- date computations # line 66
# use Date::Calc qw(:all); # line 67
该脚本现在可以工作了。因此,问题仍然是,为什么添加此软件包时它不起作用,以及为什么显示此奇怪的系统错误(缺少perl528.dll)。
答案 0 :(得分:3)
Date::Calc具有XS组件Date::Calc::XS,即它需要编译一些C代码。升级Perl时,您需要重新编译所有XS模块,以便它们与新的Perl版本一起使用。已安装的程序包与不再存在的库链接(这是“系统错误”窗口告诉您的)。
重新安装Date :: Calc应该可以解决此问题,但请确保所有其他XS模块也已更新。