- PR -

Perl のクラスの保存先

1
投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-27 11:58
現在、Perl でクラスを作る場合、ファイルの保存先は常に所定の場所に置いています。

Windows の場合は、"x:\prel\lib\site_perl"
linux の場合は、"/usr/lib/perl5/site_perl"

これを、クラスを利用する際のスクリプトファイルが置かれているフォルダと同じ場所に置いて利用することはできないのでしょうか?
汎用性の乏しいクラスの場合、Perl の共通ライブラリーのフォルダに保存することに抵抗を感じています^^;
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2006-06-27 13:50
perl コマンドの -I オプションとか、@INC とか「use lib」とかで可能です。
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2006-06-27 14:05
だいたいの環境では@INCにカレントディレクトリが含まれてると思うので、
同じディレクトリに置くなら特に何もしなくても動きそうな気がします。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-27 15:38
@INC で指定できたんですね。

しかもミニマムコード書いて試してみたら、同じディレクトリーでいけました orz
以前、どこかの環境で試したとき駄目だったため、できないものだと思い込んでいました。

これからクラスが気軽に使えます。ありがとうございました。

#長い悪夢から目覚めた気分です。
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-06-28 08:46
一点気になったので…。

あくまでもカレントディレクトリなので、
スクリプトと同じディレクトリではNGです。
実行するディレクトリとスクリプトのディレクトリが違う可能性があるなら、
ちゃんと対応をした方が良いかと思います。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-28 13:31
引用:

SHRさんの書き込み (2006-06-28 08:46) より:

あくまでもカレントディレクトリなので、
スクリプトと同じディレクトリではNGです。


参照元ファイルから見た相対的な位置として同じ位置にクラスファイルがあればOKということでは無く、実行中のディレクトリーからみた相対位置になる訳ですね。

./Class.pm ←この位置

実行中のディレクトリーって、スクリプトファイルの存在する位置と異なる場合というのは、どのような場合がありますか?
例えば、実行中のスクリプトにて、カレントディレクトリー位置を変更したら、クラスファイルは参照できなくなるってことでしょうか?
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-06-28 17:43
簡単な例ですが、/AP/work/bin/test.pl というスクリプトがあったとして、
ライブラリを同/AP/work/bin/に設置したとします。
これを/root/とか/home/hogehoge/とかでフルパスで実行した場合、
カレントは/root/ or /home/hogehoge/ですね。

/AP/work/bin/で./test.plとかで実行すれば問題は当然ありません。

※スクリプトの最初に、スクリプトのディレクトリに移動させてしまう…
というのも手ではありますが

実行中に変更した場合…は、ちょっと試せる環境がないので、
お手数ですが試してみて下さい。
1

スキルアップ/キャリアアップ(JOB@IT)