「シュガー関数=モダン」ではありませんが
「モダンPerlがわからない」
前回紹介したJiftyでは,
このようなシュガー関数は,
もっとも,
設定をまるごと放り込むタイプ
設定を行うためのシュガー関数としては,
これも細かなところは時代とともにいろいろ変わりましたが,
use strict;
use warnings;
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Foo',
VERSION_FROM => 'lib/Foo.pm',
PREREQ_PM => {
'Some::Module' => '0.01',
},
);
呼び出し元のクラスに設定が反映されるわけではない,
また,
複雑な設定に対応するのは大変
その一方で,
たとえば,
WriteMakefile(
NAME => 'Foo',
VERSION_FROM => 'lib/Foo.pm',
PREREQ_PM => {
'Some::Module' => '0.01',
(($^O eq 'MSWin32')
? ('Win32::Module' => '0.01')
: ()
),
},
);
もちろんこれはもう少しベタに,
my %config = (
NAME => 'Foo',
VERSION_FROM => 'lib/Foo.pm',
PREREQ_PM => {
'Some::Module' => '0.01',
},
);
if ($^O eq 'MSWin32') {
$config->{PREREQ_PM}->{'Win32::Module'} = '0.01';
}
WriteMakefile(%config);
ただ,
また,
設定を細分化して可読性を高めたタイプ
こういった問題に対するひとつの回答として登場したのが,
Module::Installを使うと,
use strict;
use warnings;
use inc::Module::Install;
name 'Foo';
all_from 'lib/Foo.pm';
requires 'Some::Module' => '0.01';
requires 'Win32::Module' => '0.01' if $^O eq 'MSWin32';
WriteAll;
ExtUtils::MakeMakerの例に比べると,
タイプ数については微妙なところですが,