File-Copy-Recursive-0.06 > File::Copy::Recursive


File::Copy::Recursive - Perl extension for recursively copying files and directories

File::Copy::Recursive - ファイルやディレクトリを再帰的にコピーする為のPerl拡張


  use File::Copy::Recursive qw(fcopy rcopy dircopy);

  fcopy($orig,$new[,$buf]) or die $!;
  rcopy($orig,$new[,$buf]) or die $!;
  dircopy($orig,$new[,$buf]) or die $!;


This module copies directories recursively (or single files, well... singley) to an optional depth and attempts to preserve each file or directory's mode.



None by default. But you can export all the functions as in the example above.

デフォルトではなにもEXPORTしません. しかし上記例にあるようにあなたは全ての関数をエクスポートできます.


This function uses File::Copy's copy() function to copy a file but not a directory. One difference to File::Copy::copy() is that fcopy attempts to preserve the mode (see Preserving Mode below) The optional $buf in the synopsis if the same as File::Copy::copy()'s 3rd argument returns the same as File::Copy::copy() in scalar context and 1,0,0 in list context to accomidate rcopy()'s list context on regular files. (See below for more info)

この関数はFile::Copyのファイルをコピーするcopy()関数を使用します. ディレクトリはコピーしません. File::Copy::copy()の一つの違いはfcopyはモードを保持することを試みます(下記のPreserving Modを参照して下さい) File::Copy::copy()の第三番目の引数と同じであるならば任意の$bufの概要としては........ (詳しい情報に関して以下を見てください)


This function recursively traverses the $orig directory's structure and recursively copies it to the $new directory. $new is created if necessary. It attempts to preserve the mode (see Preserving Mode below) and by default it copies all the way down into the directory, (see Managing Depth) below. If a directory is not specified it croaks just like fcopy croaks if its not a file that is specified.

この関数は再帰的に$origディレクトリ構造を行ったりきたりし,再帰的に$newディレクトリにコピーする. 必要であれば$newは作成されます. モードを保持することを試み(下記のPreserving Modを参照して下さい),そしてデフォルトでディレクトリ以下に コピーされます(Managing Depthを参照して下さい) もしディレクトリが指定されない場合,それが指定されているファイルでないのならばfcopyが警告するように警告します.

returns true or false, for true in scalar context it returns the number of files and directories copied, In list context it returns the number of files and directories, number of directories only, depth level traversed.

ファイルやディレクトリのコピーの数がスカラーコンテキストに返されたので......... 真または偽を返します,

  my $num_of_files_and_dirs = dircopy($orig,$new);
  my($num_of_files_and_dirs,$num_of_dirs,$depth_traversed) = dircopy($orig,$new);


This function will allow you to specify a file *or* directory. It calls fcopy() if its a file and dircopy() if its a directory. If you call rcopy() (or fcopy() for that matter) on a file in list context, the values will be 1,0,0 since no directories and no depth are used. This is important becasue if its a directory in list context and there is only the initial directory the return value is 1,1,1.

この関数では特別なファイルやディレクトリを指定するでしょう. それは,ファイルであるならばfcopy()を呼び,ディレクトリであるならばdircopy()を呼びます. もしあなたがリストコンテキストのファイルでrcopy()(またさらに言えばfcopy())を呼ぶ場合 ディレクトリがなく深さも指定されていないので値は1,0,0になるでしょう これは重要です,なぜならばリストコンテキストのディレクトリや初期ディレクトリの場合,値は1,1,1となります.

Preserving Mode

By default a quiet attempt is made to change the new file or directory to the mode of the old one. To turn this behavior off set $File::Copy::Recursive::KeepMode to false;

デフォルトで,新しいファイルもしくはディレクトリを古い方のモードにかえるのを落ち着いた試みでします. この振る舞いをOFFにする設定 $File::Copy::Recursive::KeepMode は間違っています;

Managing Depth

You can set the maximum depth a directory structure is recursed by setting: $File::Copy::Recursive::MaxDepth to a whole number greater than 0.

あなたはディレクトリ構造の最大深度を再帰処理させる設定をすることができる $File::Copy::Recursive::MaxDepth 0以上の整数を指定.

If your system supports symlinks then symlinks will be copied as symlinks instead of as the target file. Perl's symlink() is used instead of File::Copy's copy() You can customize this behavior by setting $File::Copy::Recursive::CopyLink to a true or false value. It is already set to true or false dending on your system's support of symlinks so you can check it with an if statement to see how it will behave:

もしあなたの利用するシステムがsymlinksをサポートしている場合,symlinksは対象ファイルの代わりにsymlinksとして コピーされるでしょう. Perlのsymlink()はFile::Copyのcopy()の代わりにしようされます. あなたは$File::Copy::Recursive::CopyLinkに真または偽の値を設定することによって振る舞いをカスタマイズすることができます. それが既に真または偽へのセットであるかあなたのシステムのsymlinksのサポートの誤ったdendingがあなたがそれをチェックすることができるそう、それが以下をどう振る舞わせるかを見るものです。

    if($File::Copy::Recursive::CopyLink) {
        print "Symlinks will be preserved\n";
    } else {
        print "Symlinks will not be preserved because your system does not support it\n";


 L<File::Copy> L<File::Spec>


Daniel Muey,

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

Copyright 2004 by Daniel Muey

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


 atsushi kobayashi(