名前¶
File::Which - 'which'ユーティリティの移植可能な実装
概要¶
use File::Which; # which()のエスクポート
use File::Which qw(which where); # which() と where()をエクスポート
my $exe_path = which('perldoc');
my @paths = where('perl');
- あるいは -
my @paths = which('perl'); # 配列はそれらの全てを検索するよう強制します
説明¶
File::Whichは、'which'プログラムがシェルの中で実装されていないシステムで 実行可能なプログラムへのパスを取得することを可能にするために作られました。
File::Whichは(File::Spec->path()によって返される)ユーザのPATHの ディレクトリを検索し、which()へのパラメータとして指定された名前を 持っている実行可能なファイルを探します。Win32システムでは、それは直接、実行可能 ファイルという考えを持っていませんが、それを示す.exeや.batといった特別な 拡張子を使っています。File::Whichは正しいファイルを見つけることを保証する ために特別なステップを取ります。(例えばperlを検索すると、それはperl.exe, perl.batなどを試してみます)。
Win32, DOS, OS2 そして VMSで使われるステップ¶
Windows NT¶
Windows NTはPATHEXTという特別な環境変数を持っています。これはシェルにより 実行可能ファイルを探すために使われます。通常、それには .EXE;.BAT;.COM;.JS;.VBSなどの形式でリストが入っています。 もしFile::Whichがそのような環境変数を見つけると、それはリストを解析し、 それを異なる拡張子として使います。
Windows 9x そしてそのほかの古い Win/DOS/OS2¶
このオペレーティング・システムの集合はPATHEXT変数を持っていません。 そして通常は、そこでは拡張子.exe, .bat そして(さらになさそうな) .comがついた実行可能ファイルを見つけるでしょう。File::Whichは Win32の下で、PATHEXT変数が見つからなければ、ハードコーディングされた リストを使います。
VMS¶
Windows 9xのケースと同じ:.exe と .comを(その順序で)使います。
関数¶
which($short_exe_name)¶
デフォルトでエクスポートされます。
$short_exe_nameはプログラムを呼び出すためにシェルで使われる名前( 例えばperl)。
もし指定された名前を持っている実行可能ファイルを見つけたら、which()は この実行可能ファイルに導く絶対パスを返します(例えば/usr/bin/perlまたは C:\Perl\Bin\perl.exe)。
もし実行可能ファイルを見つけなければ、undefを返します。
which()がリスト・コンテキストで呼ばれると、マッチする全てを 返します。
where($short_exe_name)¶
デフォルトではエクスポートされません。
リスト・コンテキストでのwhich($short_exe_name)と同じ。`where' ユーティリティと同じく、$short_exe_nameにマッチする全ての パス名が入った配列を返します。
バグそして注意点¶
それら用のプラットホーム独自のコードがありますが、VMSやMacOSでは テストされていません。時間があるだれかがとても親切なことに、 どうなったかレポートしてくれるとよいのですが。
File::SpecはWin32, VMSあるいはMacOSでは現在のディレクトリをPATHの 先頭に追加します。私はそれらの知識はありません。そのため現在の ディレクトリが最初に検索されるかどうかh知りません。だれか教えてくれません?
作者¶
Per Einar Ellefsen, <per.einar (at) skynet.be>
Originated in modperl-2.0/lib/Apache/Build.pm. Changed for use in DocSet (for the mod_perl site) and Win32-awareness by me, with slight modifications by Stas Bekman, then extracted to create File::Which.
Version 0.04 had some significant platform-related changes, taken from the Perl Power Tools `which' implementation by Abigail with enhancements from Peter Prymmer. See http://www.perl.com/language/ppt/src/which/index.html for more information.
ライセンス(=License)¶
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
参考資料¶
File::Spec, which(1), Perl Power Tools: http://www.perl.com/language/ppt/index.html .
翻訳者¶
川合 孝典(GCD00051@nifty.ne.jp)