Perl Compat.pm

时间:2017-02-24 13:07:23

标签: perl build

我正在尝试发布一个模块,并且遇到了很多奇怪的错误,最新的错误如下:

C:\Shared\John\Perl\unifdef+.0.5.1>build disttest
Creating Makefile.PL
Invalid version format (non-numeric data) at C:/perl/lib/Module/Build/Compat.pm
line 134.

指定行的代码是:

if ( my $minimum_perl = $requires->{perl} ) {
    my $min_ver = version->new($minimum_perl)->numify;
    print {$fh} "require $min_ver;\n";
}

所以看起来$minimum_perl已损坏。我确实有这条线:

require 5.10.0;

在代码中,但根据我读过的文档,这应该没问题。

我尝试升级各种模块,最后我尝试了cpan upgrade,并升级了我的整个cpan,但我仍然收到错误。谁能告诉我我做错了什么?我正在运行perl 5.24.1

1 个答案:

答案 0 :(得分:0)

好的,想通了(有点)。我正在发布一个答案,因为我认为其他人会遇到同样的问题,希望这会对他们有所帮助。我的Build.PL脚本是来自网络上的示例的剪切/粘贴/修改。我有以下内容:

signal_filt = fits.open('signal_filt.fits')[0]
wcs = WCS(signal_filt.header)
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8], projection=wcs)
lqs = ax.imshow(signal_filt.data, vmin = -1,  vmax = 4, cmap = 'hot',origin = 'lower')
ax.imshow(signal_filt.data[y1:y2,x1:x2]*1000, vmin = -1,  vmax = 4, cmap = 'hot', origin = 'lower')
cb = plt.colorbar(lqs)
cb.set_label('Flux (mJy/beam)')

use 5.010000; # NOT 5.8.8 - needed by CPAN testers use Module::Build; my $builder = Module::Build->new( module_name => 'code::unifdef+' , license => 'perl' , requires => { perl => '>= 5.10.0' } #hmm, this doesn't work... , dist_version => '0.005.001' , dist_author => 'John Ulvr <perldev@ulvr.com>' , dist_abstract => 'processes conditional parts of makefiles, c/c++ and kconfig files' , create_readme => 0 , create_makefile_pl => 'traditional' ); $builder->create_build_script; #generate Build 行造成了问题。我不确定为什么,因为我在网络上看到了其他类似的例子,所以要么每个人都错了,要么在Compat.pm中有一些错误。删除require行可以解决问题(我在.pl文件中需要,因此它应该能够捕获过时的问题)。