File-pushd-1.00 > File::pushd

名前

File::pushd - change directory temporarily for a limited scope

File::pushd - スコープ内での一時的なディレクトリの変更

VERSION

This documentation describes version 1.00.

このドキュメントはバージョン 1.00について述べたものです.

概要

  use File::pushd;

  chdir $ENV{HOME};

  # change directory again for a limited scope
  {
      my $dir = pushd( '/tmp' );
      # working directory changed to /tmp
  }
  # working directory has reverted to $ENV{HOME}

  # tempd() is equivalent to pushd( File::Temp::tempdir )
  {
      my $dir = tempd();
  }

  # object stringifies naturally as an absolute path
  {
     my $dir = pushd( '/tmp' );
     my $filename = File::Spec->catfile( $dir, "somefile.txt" );
     # gives /tmp/somefile.txt
  }
  use File::pushd;

  chdir $ENV{HOME};

  # スコープ内でディレクトリを変更します
  {
      my $dir = pushd( '/tmp' );
      # working directory changed to /tmp
  }
  # 作業ディレクトリは $ENV{HOME}に戻ります

  # tempd()は pushd( File::Temp::tempdir )と等価です.
  {
      my $dir = tempd();
  }

  # オブジェクトの文字列化すると絶対パスが得られます
  {
     my $dir = pushd( '/tmp' );
     my $filename = File::Spec->catfile( $dir, "somefile.txt" );
     # /tmp/somefile.txt が得られます
  }

説明

File::pushd does a temporary chdir that is easily and automatically reverted, similar to pushd in some Unix command shells. It works by creating an object that caches the original working directory. When the object is destroyed, the destructor calls chdir to revert to the original working directory. By storing the object in a lexical variable with a limited scope, this happens automatically at the end of the scope.

This is very handy when working with temporary directories for tasks like testing; a function is provided to streamline getting a temporary directory from File::Temp.

For convenience, the object stringifies as the canonical form of the absolute pathname of the directory entered.

File::pushdは簡単な方法で一時的に chdirし, 自動的に元に戻します. これは Unixコマンドの pushdと類似しています. これはオブジェクトを作成し, オリジナルの作業ディレクトリをキャッシュします. そしてオブジェクトが破棄されるとき, デストラクタは chdirを呼び出し, 元の作業ディレクトリへと戻ります. オブジェクトをスコープ中のレキシカル変数に格納することで, スコープ終了時に, このことが自動的に行われます.

これはテストのようなテンポラリディレクトリで作業を行う場合に便利です. File::Tempからテンポラリディレクトリの取得を能率的に行う機能を提供します.

便宜上, オブジェクトを文字列化した場合, 移動したディレクトリの絶対パスの標準形が得られます.

USAGE

  use File::pushd;

Using File::pushd automatically imports the pushd and tempd functions.

pushd

  {
      my $dir = pushd( $target_directory );
  }

Caches the current working directory, calls chdir to change to the target directory, and returns a File::pushd object. When the object is destroyed, the working directory reverts to the original directory.

The provided target directory can be a relative or absolute path. If called with no arguments, it uses the current directory as its target and returns to the current directory when the object is destroyed.

tempd

  {
      my $dir = tempd();
  }

This function is like pushd but automatically creates and calls chdir to a temporary directory created by File::Temp. Unlike normal File::Temp cleanup which happens at the end of the program, this temporary directory is removed when the object is destroyed. (But also see preserve.) A warning will be issued if the directory cannot be removed.

preserve

  {
      my $dir = tempd();
      $dir->preserve;      # mark to preserve at end of scope
      $dir->preserve(0);   # mark to delete at end of scope
  }

Controls whether a temporary directory will be cleaned up when the object is destroyed. With no arguments, preserve sets the directory to be preserved. With an argument, the directory will be preserved if the argument is true, or marked for cleanup if the argument is false. Only tempd objects may be marked for cleanup. (Target directories to pushd are always preserved.) preserve returns true if the directory will be preserved, and false otherwise.

  use File::pushd;

File::pushdを useすると, pushdtempd 関数が自動的にインポートされます.

pushd

  {
      my $dir = pushd( $target_directory );
  }

現在の作業ディレクトリをキャッシュし, 目的のディレクトリに切り替えるために chdirを呼び出し, そして File::pushdオブジェクトを返します. オブジェクトが破棄されるとき, 作業ディレクトリを元のディレクトリに戻します.

引数として与えるディレクトリは相対パスでも, 絶対パスでも指定できます. もし引数がなければ, カレントディレクトリをターゲットして使用し, オブジェクトが破棄されたときにカレントディレクトリに戻ります.

tempd

  {
      my $dir = tempd();
  }

この関数は pushdと似ていますが, File::Tempにより, テンポラリディレクトリを作成し, そのディレクトリに chdirします. 通常の File::Tempのプログラム終了時のクリーンアップと異なり, このテンポラリディレクトリは, オブジェクトが破棄されたときに削除されます. (preserveも参照してください.) ディレクトリを削除することができない場合は, 警告が発せされます.

preserve

  {
      my $dir = tempd();
      $dir->preserve;      # mark to preserve at end of scope
      $dir->preserve(0);   # mark to delete at end of scope
  }

オブジェクトが破棄される場合に, ディレクトリを削除するかどうかについての制御を行います. 引数なしの場合, preserveはディレクトリを保存するように設定します. 引数ありの場合, 引数が真であればディレクトリを保存し, 偽であれば削除するようにマークします. tempdオブジェクトであれば削除するようマークします. (ターゲットディレクトリへの pushdであれば, 常に保存されます.) ディレクトリを保存するようにできれば preserveは真を返し, その他の場合は偽を返します.

SEE ALSO

バグ

Please report any bugs or feature using the CPAN Request Tracker. Bugs can be submitted through the web interface at http://rt.cpan.org/Dist/Display.html?Queue=File-pushd

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

バグ, 機能に関するレポートについては CPAN Request Trackerを利用してください. バグについては Webインタフェースで投稿することもできます. http://rt.cpan.org/Dist/Display.html?Queue=File-pushd

バグ, 機能について投稿を行う際は, バグ, 機能を説明するためのテストファイルか, 既存のテストファイルに対するパッチファイルを含めるようにしてください.

作者

David A. Golden (DAGOLDEN)

コピーライト & ライセンス

Copyright (c) 2005, 2006, 2007 by David A. Golden

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Files produced as output though the use of this software, including generated copies of boilerplate templates provided with this software, shall not be considered Derivative Works, but shall be considered the original work of the Licensor.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.