end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

実行path(FindBin)を基準に use lib (File::Spec)、or FindBin::libs

まずは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する必要があります。