- - PR -
Perl のクラスの保存先
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-27 11:58
現在、Perl でクラスを作る場合、ファイルの保存先は常に所定の場所に置いています。
Windows の場合は、"x:\prel\lib\site_perl" linux の場合は、"/usr/lib/perl5/site_perl" これを、クラスを利用する際のスクリプトファイルが置かれているフォルダと同じ場所に置いて利用することはできないのでしょうか? 汎用性の乏しいクラスの場合、Perl の共通ライブラリーのフォルダに保存することに抵抗を感じています^^; | ||||
|
投稿日時: 2006-06-27 13:50
perl コマンドの -I オプションとか、@INC とか「use lib」とかで可能です。
| ||||
|
投稿日時: 2006-06-27 14:05
だいたいの環境では@INCにカレントディレクトリが含まれてると思うので、
同じディレクトリに置くなら特に何もしなくても動きそうな気がします。 | ||||
|
投稿日時: 2006-06-27 15:38
@INC で指定できたんですね。
しかもミニマムコード書いて試してみたら、同じディレクトリーでいけました orz 以前、どこかの環境で試したとき駄目だったため、できないものだと思い込んでいました。 これからクラスが気軽に使えます。ありがとうございました。 #長い悪夢から目覚めた気分です。 | ||||
|
投稿日時: 2006-06-28 08:46
一点気になったので…。
あくまでもカレントディレクトリなので、 スクリプトと同じディレクトリではNGです。 実行するディレクトリとスクリプトのディレクトリが違う可能性があるなら、 ちゃんと対応をした方が良いかと思います。 | ||||
|
投稿日時: 2006-06-28 13:31
参照元ファイルから見た相対的な位置として同じ位置にクラスファイルがあればOKということでは無く、実行中のディレクトリーからみた相対位置になる訳ですね。 ./Class.pm ←この位置 実行中のディレクトリーって、スクリプトファイルの存在する位置と異なる場合というのは、どのような場合がありますか? 例えば、実行中のスクリプトにて、カレントディレクトリー位置を変更したら、クラスファイルは参照できなくなるってことでしょうか? | ||||
|
投稿日時: 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