BASENAME(3)              USER COMMANDS                BASENAME(3)



NAME
     Basename - ファイル記述を解析する

     fileparse - パス名を分解する

     basename - パス名からファイル名だけを取り出す

     dirname - パス名からディレクトリ名だけを取り出す

SYNOPSIS
         use File::Basename;

         ($name,$path,$suffix) = fileparse($fullname,@suffixlist)
         fileparse_set_fstype($os_string);
         $basename = basename($fullname,@suffixlist);
         $dirname = dirname($fullname);

         ($name,$path,$suffix) = fileparse("lib/File/Basename.pm",".pm");
         fileparse_set_fstype("VMS");
         $basename = basename("lib/File/Basename.pm",".pm");
         $dirname = dirname("lib/File/Basename.pm");


DESCRIPTION
     これらのルーティンは、ファイル記述を解析し、異なる OS の構文
     に従った形にします。

     fileparse_set_fstype
         fileparse_set_fstype ルーティンを使って、構文を選択しま
         す。 渡された引数の部分文字列として、"VMS"、"MSDOS"、
         "MacOS" といったものが含まれていれば、後続の fileparse()、
         basename()、dirname() の呼び出しでは、該当 OS のファイ
         ル記述構文が使われます。 引数にこれらの部分文字列が含ま
         れていなければ、UNIX の構文が用いられます。 このパター
         ンマッチは、大文字小文字を区別します。 VMS 構文を選択し
         て、これらのルーティンに渡すファイル記述に "/" が含まれ
         ていれば、UNIX エミュレーションを使っていると仮定し、そ
         の 1 つの関数呼び出しのみ、UNIX の構文規則を適用します。

         fileparse_set_fstype() を呼んでいなければ、これらの規則
         にしたがって、Config パッケージの "osname" エントリを調
         べることによって、構文が選択されます。

     fileparse
         fileparse() ルーティンは、ファイル記述をパス部、ファイル
         名、サフィクスの 3 つの部分に分割します。 パス部には、
         入力のファイル記述に含まれる最後のディレクトリ区切り文字
         までが含まれます。 入力ファイル記述の残りの部分は、
         @sufixlist に示す省略可能なパターンにしたがって、名前と
         サフィクスに分割されます。 このリストの要素はそれぞれ、
         正規表現として解釈され、ファイル名の最語尾にマッチさせま
         す。 マッチが成功すると、ファイル名のマッチした部分が取



Perl module manpages Last change: Release 5.0 Patchlevel 00     1






BASENAME(3)              USER COMMANDS                BASENAME(3)



         り除かれ、サフィクスにまわされます。 @suffixlist を正し
         く使えば、ファイルの型や試験のバージョンを取り除くことが
         できます。

         パス部とファイル名とサフィクスをこの順序でつなげると、入
         力されたファイル記述と一致することが保証されます。

EXAMPLES
     UNIX ファイルの構文を使って、

         ($base,$path,$type) = fileparse('/virgil/aeneid/draft.book7',
                                         '\.book\d+');

     とすれば、

         $base eq 'draft'
         $path eq '/virgil/aeneid',
         $tail eq '.book7'

     のようになります。 同様に VMS 構文を使って、

         ($name,$dir,$type) = fileparse('Doc_Root:[Help]Rhetoric.Rnh',
                                        '\..*');

     とすれば、

         $name eq 'Rhetoric'
         $dir  eq 'Doc_Root:[Help]'
         $type eq '.Rnh'

     のようになります。

     basename
         basename() ルーティンは、fileparse() を同じ引数で呼んだ
         結果得られるリストの最初の要素を返します。 これは、UNIX
         のシェルコマンド basename(1) とのコンパチビリティのため
         に用意されています。

     dirname
         dirname() ルーティンは、入力ファイル記述のディレクトリ部
         分を返します。 VMS 構文や MacOS 構文を使っているときに
         は、fileparse() を同じ入力ファイル記述で呼んだ結果得られ
         るリストの 2 番目の要素と同じです。 UNIX 構文や MSDOS
         構文では、UNIX のシェルコマンド dirname(1) の動作と同じ
         値を返します。 これは、通常 fileparse() の動作と同じで
         すが、異なる場合もあります。 たとえば、ファイル記述 lib/
         に対して、fileparse() は、ディレクトリ名が lib/ と解釈し
         ますが、dirname() は、ディレクトリ名を . であると解釈し
         ます。






Perl module manpages Last change: Release 5.0 Patchlevel 00     2