FindBin::libsを使ってlibまでのパスを取得する
FindBin::libsを使ってみたので、メモしておく。
普通のFindBinを使っても同じことができるけど、こっちのほうがすっきりしてる気がする
FindBin::libsとは
Perlモジュールなどが置いてあるディレクトリ(libとか)までのパスを取得して、
そのパスに対してuse libしてサーチパスに追加してくれる。
その他にも該当ディレクトリのパスを配列に格納したりできる。
使うときにはFindBin::libsは標準モジュールではないので、予めcpanmでインストール する必要がある。
$ cpanm FindBin::libs
後、推奨バージョンは5.10からの環境となる。
使ってみる
libまでのパスを取得し、サーチパスへ追加する
use FindBin::libs; # use FindBin; # use lib "$FindBin::Bin/lib"; # と同じ
libまでのパスを配列に格納し、出力する
引数にexportを指定すると、@libに該当ディレクトリまでのパスを格納する。
findbin.plというファイルに下記を追加する。
use FindBin::libs qw( export ); print join("\n", @lib);
実行すると
$ perl findbin.pl /home/******/repos/git-cal/lib /home/******/lib
lib以外のディレクトリまでのパスをサーチパスに追加する
libではなくて、moduleというディレクトリまでのパスを調べたいときはbaseにmoduleを設定する。
use FindBin::libs qw( base=module );
その他にも使えるオプション(subdir,egnore,)があり、柔軟に使えそうなので、調べたら追記する。