メメメモモ

プログラミング、筋トレ、ゲーム、etc

スクリプトファイルがあるディレクトリへのパスを得る

File::Basenameモジュールのdirname()関数を使います。

use File::Basename;

# スクリプトファイルがあるディレクトリへの相対パス
dirname(__FILE__);

# 絶対パスを得るならFile::Spec->rel2abs()を使う
File::Spec->rel2abs( dirname(__FILE__) );

スクリプトファイルがあるディレクトリからライブラリへの相対パスが決まっていれば、
これを使ってライブラリへのパスを指定することができます。
上の階層にあるlib/ディレクトリにパスを通す場合なら以下のようにします。

use File::Basename;
use lib dirname(__FILE__) . '/../lib';

# 移植性を考慮する場合
use File::Spec;
use lib File::Spec->catdir(dirname(__FILE__), '..', 'lib');


PHPにも同じような関数があるので、同じようにできます。

<?php

ini_set("include_path",
           ini_get('include_path')
          . PATH_SEPARATOR
          . dirname(__FILE__) . '/../include');