我正在尝试发布一个模块,并且遇到了很多奇怪的错误,最新的错误如下:
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
答案 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文件中需要,因此它应该能够捕获过时的问题)。