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