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