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