Page Top


NAME

Path::Class::File - ファイルのオブジェクト表現

Page Top


SYNOPSIS

  use Path::Class qw(file);  # 短いコンストラクタのエクスポート
  
  my $file = file('foo', 'bar.txt');  # Path::Class::Fileオブジェクト
  my $file = Path::Class::File->new('foo', 'bar.txt'); # 同様
  
  # Unixでは'foo/bar.txt'、Windowsでは'foo\bar.txt'などに文字列化
  print "file: $file\n";
  
  if ($file->is_absolute) { ... }
  
  my $v = $file->volume; # Windowsでは'C:'、Unixではから文字列、
                         # Mac OSでは'Macintosh HD:'など
  
  $file->cleanup; # パスネームの論理的なクリーンナップ
  
  my $dir = $file->dir;  # Path::Class::Dirオブジェクト
  
  my $abs = $file->absolute; # 絶対パスへの変換
  my $rel = $file->relative; # 相対パスへの変換

Page Top


DESCRIPTION

Path::Class::Fileクラスはクロス・プラットフォームな方法でのファイル名の操作のための機能を含みます。

Page Top


METHODS

$file = Path::Class::File->new( <dir1>, <dir2>, ..., <file> )
$file = file( <dir1>, <dir2>, ..., <file> )

新しいPath::Class::Fileオブジェクトを生成し、これを返します。 引数でファイルへのパスを指定します。 何らかのボリュームを最初の引数で、あるいは最初の引数の一部分で指定することができます。 プラットフォーム-ニュートラルな記述:

  my $dir = file( 'foo', 'bar', 'baz.txt' );

あるいは、プラットフォーム-ネイティブな記述:

  my $dir = dir( 'foo/bar/baz.txt' );

あるいは、この二つの混合ができます:

  my $dir = dir( 'foo/bar', 'baz.txt' );

上の三つの例はいずれも、相対パスを生成します。 絶対パスを生成するには、プラットフォーム-ネイティブな次のような記述:

  my $dir = dir( '/var/tmp/foo.txt' );

または最初の引数としてから文字列を記述します:

  my $dir = dir( '', 'var', 'tmp', 'foo.txt' );

二番目の形式は不恰好に見えるとすれば、それは意図的なことです - 最初に挙げた/var/tmpあるいは\Windowsのようなパスはクロスプラットフォームのコンセプトではなく、もしあなたがコードをクロスプラットフォームにしようとしているなら、おそらくその中に現れるべきではありません。 これが設定ファイル、ユーザ入力、その他から与えられるのであれば、最初の形態はあらゆる意味ですばらしいものです。

$file->stringify

このメソッドはPath::Class::Fileが文字列コンテクストで使われたときに自動的に呼ばれるもので、したがって以下は同じことになります:

  $string = $file->stringify;
  $string = "$file";
$file->volume

このオブジェクトにボリューム(例えば、WindowsではC:、Mac OSではMacintosh HD:など)があれば、それを返します。 そうでなければ、空文字列を返します。

$file->basename

ファイル名を、ディレクトリ部分(あれば)抜きの文字列で返します。

$file->is_dir

このオブジェクトがディレクトリをあらわしているか、boolean(真偽)値で返します。 当然のことですが、Path::Class::Fileは常にfalseを返しますし、Path::Class::Dirは常にtrueを返します。

$file->is_absolute

ファイルが絶対パス指定(/usr/local/foo.txt\Windows\Foo.txtのように)を指しているか否かに応じて、trueかfalseを返します。

$file->cleanup

ファイルパスの論理的なクリーンナップを行います。例えば:

  my $file = file('/foo//baz/./foo.txt')->cleanup;
  # $fileは'/foo/baz/foo.txt'をあらわします;
$dir = $file->dir

このファイルを含むディレクトリをあらわすPath::Class::Dirオブジェクトを返します。

$dir = $file->parent

dir()メソッドの別名です。

$abs = $file->absolute

$fileを絶対パスであらわしたPath::Class::Fileオブジェクトを返します。 追加引数として、文字列かPath::Class::Dirオブジェクトで、相対パスのベースとして使われるディレクトリを指定することができます。 指定しなかった時は、現在のワーキング・ディレクトリが使われます。

$rel = $file->relative

$fileを相対パスであらわしたPath::Class::Fileオブジェクトを返します。 追加引数として、文字列かPath::Class::Dirオブジェクトで、相対パスのベースとして使われるディレクトリを指定することができます。 指定しなかった時は、現在のワーキング・ディレクトリが使われます。

$foreign = $file->as_foreign($type)

$file$typeタイプのシステムで指定した場合のPath::Class::Fileオブジェクトを返します。 既知のタイプにはUnixWin32MacVMS、そしてOS2、つまりFile::Specにサブクラスがあるすべてのものが含まれます。

生成されたオブジェクト(サブディレクトリ、ファイル、親ディレクトリなど)はこのタイプを保持します。

$foreign = Path::Class::File->new_foreign($type, @args)

$file$typeタイプのシステムで指定した場合のPath::Class::Fileオブジェクトを返します。 既知のタイプにはUnixWin32MacVMS、そしてOS2、つまりFile::Specにサブクラスがあるすべてのものが含まれます。

@argsに含まれる引数は、new()で指定されるものと同じです。

$fh = $file->open($mode, $permissions)

$fileを含む与えられた引数すべてをIO::File->newに渡し(この順番でIO::File->openが呼ばれます)、その結果をIO::Fileオブジェクトとして返します。 openが失敗すると、undefが返され$!がセットされます。

$fh = $file->openr()

以下を行うためのショートカットです。

 $fh = $file->open('r') or die "Can't read $file: $!";
$fh = $file->openw()

以下を行うためのショートカットです。

 $fh = $file->open('w') or die "Can't write $file: $!";
$file->touch

与えられたファイルが存在すれば、その更新時刻をアクセス時刻をたった今にセットします。存在しない時は、touch()は存在するようにします - YES! - その更新時刻とアクセス時刻は居間にセットされます。

$file->slurp()

スカラコンテキストでは、$fileの内容を文字列で返します。リストコンテキストでは、$fileの内容を($/の設定内容に応じて)行ごとのリストとして返します。ファイルを読めなかった時は、このメソッドは例外を投げます。

ファイルの各行に対してchomp()を行いたいときには、chompまたはchompedパラメータにtrueの値を渡してください:

  my @lines = $file->slurp(chomp => 1);
$file->remove()

このメソッドはどのプラットフォームあれできるだけうまく行く方法でファイルの削除を試み、ファイル削除に成功したか否かをboolean値で返します。

remove()は単純にPerlのunlink()関数を呼ぶよりよい方法です。 というのは、いくつかのプラットホーム(特記すべきものとしてはVMS)では、実際にはファイルの全バージョンがなくなるまでunlink()を複数回呼ばなければならないからです。 remove()メソッドは、このプロセスを行ってくれます。

$st = $file->stat()

このファイルに対するFile::stat::stat()を呼び出し、その結果を示すFile::statオブジェクトを返します。

$st = $file->lstat()

stat()と同じですが、$fileがシンボリックリンクの時は、lstat()はリンクの指すファイルの代わりにリンクのstatを行います。

Page Top


AUTHOR

Ken Williams, ken@mathforum.org

Page Top


SEE ALSO

Path::Class, Path::Class::Dir, File::Spec

Page Top


DOCUMENT TRANSLATION

Makio Tsukamoto, tsukamoto@gmail.com

Page Top