Perl模块 - dist.ini和特定于平台的先决条件

Dr.*_*che 7 windows perl perl-module dist-zilla

如何dist.ini为每个平台添加条件先决条件(Windows /非Windows)我希望模块支持?

例如在perl代码中,我可以这样做:

if ( $^0 eq 'MSWin32' ){
    require Win32::Foo;
}else{
    require Bar::Baz;
}
Run Code Online (Sandbox Code Playgroud)

我如何迎合这样的每个系统/平台,dist.ini以便通过cpan/cpanm安装正确的先决条件?

fri*_*edo 4

您不能在 中执行此操作dist.ini,因为 ini 文件实际上没有任何方法来执行条件逻辑。但一种方法可能是编写自己的 Dist::Zilla 插件,如下所示:

package Dist::Zilla::Plugin::MyPrereqs;    # pick a better name

use Moose;
with 'Dist::Zilla::Role::PrereqSource';

sub register_prereqs { 
    my $self = shift;

    my %prereqs;
    if ( $^0 eq 'MSWin32' ) { 
        $prereqs{'Win32::Foo'} = '0.12';     # min. version
    } else { 
        $prereqs{'Bar::Baz'} = '1.43';
    }

    $self->zilla->register_prereqs( %prereqs );
}
Run Code Online (Sandbox Code Playgroud)

如果您将其概括为在 中获取一些依赖于平台的先决条件列表dist.ini,那么它将成为一个很好的 CPAN 版本。