[kansaipm] Re: FindBin

Yasushi Nakajima nakajima at netstock.co.jp
Tue Jul 8 08:36:16 CDT 2003


片松> $0 は 起動したスクリプトファイル名ですよね?
片松> requireで呼ばれたスクリプトでも、呼び出し元のスクリプトファイルの
片松> パスではなく、そのスクリプトファイルのパスが欲しいのです。
片松> # だから__FILE__を使っています。

 なるほど。

片松> /export/home/katama2/../test.pl
片松> となります。
片松> /export/home/test.pl
片松> とはならないのでしょうか?
片松> それとも間に「..」が入っても「/」から始まれば absolute path なのでしょうか?

 端的に言えばYesです。..が入っても、カレントディレクトリとは関係なく特
定のディレクトリを指すという点は変わりませんから。

 File::Spec->canonpath()を使うと、連続する/をまとめたり./を取り除いたり
してくれますが、..は処理してくれません。どうやらこれは..の前のディレクト
リがシンボリックリンクだったときに意図せぬ結果を招く危険があるからという
ことのようです。それを承知で自前で処理するなら、

        while ( $path =~ s![^/]+/\.\.(/|$)!! ) {}

とでもすればよいでしょう。

-- 
Yasushi Nakajima <nakajima at netstock.co.jp>




More information about the Kansai-pm mailing list