[kansaipm] Re: FindBin

片松 祐司 katama2-ml at osk.toppan.co.jp
Tue Jul 8 04:56:40 CDT 2003


片松@凸版 です

中島さん曰く
>  片松さん、お久しぶりです。XPDFJは実に遅々たる進行状況です。
すみません…お手伝い出来ていなくて…

中島さん曰く
>  この話ですが、Unixだと起きないですね。Windowsだとダメ。調べてみると、
use lib の後に require(or use) を入れるとUnixでも起きます。

$ perl -wTe '
use strict;
use FindBin;
use lib "$FindBin::Bin";
require "a";
'
Insecure dependency in require while running with -T switch at -e line 5.

中島さん曰く
>  これだと、$thisScriptPathが相対パスかもしれないので、もしどれかのモジュー
> ルでカレントディレクトリを変更していたら、そこから先ではuseやrequireに失
> 敗する危険がありますね。やはり絶対パスに直してからuse libに渡した方が安
> 全。File::Spec->rel2abs()を使うといいと思います。File::Spec::Win32は、
> Cwdのようにchdir()したりしませんので、汚染チェックには引っかかりません。
ありがとうございます。早速試してみたのですが、

$0 は 起動したスクリプトファイル名ですよね?
requireで呼ばれたスクリプトでも、呼び出し元のスクリプトファイルの
パスではなく、そのスクリプトファイルのパスが欲しいのです。
# だから__FILE__を使っています。
## と思ったらFindBinも$0を使っているのですね…
## FindBinを使う事自体が間違っていました。

また、別の疑問ですが、
$ perl -wTe '
use strict;
use File::Spec;
print File::Spec->rel2abs("../test.pl");
'
/export/home/katama2/../test.pl
となります。
/export/home/test.pl
とはならないのでしょうか?
それとも間に「..」が入っても「/」から始まれば absolute path なのでしょうか?
---------1---------2---------3---------4---------5---------6---------7
	片松 祐司 <katama2 at osk.toppan.co.jp>




More information about the Kansai-pm mailing list