まずはFindBinやFile::Spec
FindBinやFile::Specは、それぞれ、次のurlで分かりやすく解説されています。
http://d.hatena.ne.jp/minesouta/20070818
http://d.hatena.ne.jp/minesouta/20071009
これらは、実行pathを発見し( FindBin )、そこを基準に use lib ( File::Spec ) する際に使用しますが、サンプルプログラムとして plagger を読むと一目瞭然です。
#!/usr/bin/perl use strict; use warnings; use FindBin; use File::Spec; use lib File::Spec->catdir($FindBin::Bin, 'lib'); use Plagger; use Getopt::Long; my $config = File::Spec->catfile($FindBin::Bin, 'config.yaml'); GetOptions('--config=s', \$config, '--version' => \my $version); Getopt::Long::Configure("bundling"); # allows -c -v if ($version) { print "Plagger version $Plagger::VERSION\n"; exit; } Plagger->bootstrap(config => $config);
FindBin::libsで更に簡単に use lib
先程の「use lib File::Spec->catdir($FindBin::Bin, 'lib');」は、FindBin::libsを使用すれば、更に簡単に記述できます。
FindBinやFile::Specの場合)
use FindBin; use File::Spec; use lib File::Spec->catdir($FindBin::Bin, 'lib');
FindBin::libsの場合)
use FindBin::libs;
※FindBin::libsは、perlの標準moduleではありませんので、cpanからintallする必要があります。