我有perl脚本,用于在AIX版本5中正常工作的TSM报告。将AIX升级到版本6后,脚本无法正常工作。 我得到这个错误:
byteloader version mismatch expected 0.5 , got 0.6 .
我想升级后的操作系统的Perl也升级从Perl 5.8.2(工作)到5.8.8(不工作)。
为了使这个脚本能在AIX 6上运行,我需要做些什么?
你的Perl脚本显然使用字节码 。 字节码就像编译的代码一样。 这是预分析的代码加载比正常的脚本代码更有效(真正糟糕的解释, 维基百科可能做得更好)。
但是在perl中,运行字节码仅限于它所使用的模块的版本。 所以这意味着你使用ByteLoader 0.5来构build字节码,但是你运行它的那个版本有0.6版本。
解决方法是用较新版本的ByteLoader模块重新编译脚本(它的文档包含了这样做的说明),或运行正常的非字节码脚本。 但是,两者都要求你仍然有正常的非字节码版本。