__FILE__, File::Specなど

あるモジュールファイルのパスを取得したかったのだけど、最初やり方わからなくて苦労したのでメモ。

__FILE__

これを使えば、ファイル名を取得することができる

File::Basename

これを使うと、ディレクトリ名とファイル名を取り出すことが可能

use File::Basename;

$dir = dirname(__FILE__);
($basename, $dir) = fileparse( __FILE__ );

print $dir, $basename;
File::Spec

これを使うと、ディレクトリを連結したり相対パスから絶対パスへ変換したりすることが可能

use File::Spec;
use File::Basename;

print File::Spec->catfile(dirname(__FILE__), 'sub', 'foo.pl'), "\n";
print File::Spec->rel2abs(__FILE__), "\n";

知ってればすぐだけど知らないと調べるのはなかなか大変 >_