http://www.perlmonks.org/index.pl?node_id=513817
File::SpecとCwdを使ってパスを作成した場合の細かい違いについて。*nix系だけでなく、Win32とかを視野に入れてポータブルなコードを書く場合はこういう事に関しても知ってないとまずいんだよねぇ。俺はちなみによく「今実行されたファイルの位置から判別したパスを@INCに入れる」という行動はCwdとかを使うとうまくいかないので、__FILE__とFile::Basenameでやってる:
use File::Spec;
use File::Basename;
BEGIN
{
# このファイルがある場所から../libやその他のディレクトリをうまくパスやら
# 設定やらに入れる
my $curdir = dirname(__FILE__);
my $libdir = File::Spec->canonpath(File::Spec->catdir($curdir, File::Spec->updir, 'lib'));
unshift @INC, $libdir;
}