私は、同じ機能を持つFile :: Copy :: Recursiveというライブラリがあることを知っています。残念ながら、私は現在、ライブラリをインストールする自由がなく、実用的ではない人を説得するサーバーに取り組んでいます。ディレクトリとそのすべての内容はコピーされますか?
サブディレクトリとその内容を含むディレクトリのすべての内容を新しい空のディレクトリにコピーする機能を作成しようとしています。ここに私の完全なコードは今だ:
#!/usr/bin/perl
use File::Copy;
# To use: rec_cpy (sourcedir, destdir)
sub rec_cpy {
my $sourcedir = $_[0];
my $destdir = $_[1];
# open the directory
opendir(DIR, $sourcedir) or die "Failed to open $sourcedir\n";
my @files = readdir(DIR);
closedir(DIR);
# iterate over contents of directory
foreach my $filename (@files) {
if(-d $filename && $filename ne "." && $filename ne "..") {
# if a subdirectory, make the directory and copy its contents
mkdir "$destdir/$filename";
rec_cpy("$sourcedir/$filename","$destdir/$filename");
}
else {
# if anything else, copy it over
copy ("$sourcedir/$filename","$destdir/$filename");
}
}
return;
}
rec_cpy("test1", "test2");
mkdir "itried";
「test1のは、」ファイルとファイルを含むディレクトリ、(すべてのユニークな名前を持つ)を含むディレクトリです。 "test2"は空であるが現存するディレクトリである。
これを実行すると、「test1/..」と「test2/..」はrec_cpy.pl 26行目と全く同じです(コピーされていません)。すでに ".."が入っている)。しかし、私がtest2を開くと、test1のディレクトリはファイルではなくディレクトリとしてコピーされますが、 "itried"は問題なくディレクトリとして作成されます。どうしたの?あなただけの2つのミス作ら
ライセンスに応じて、プロジェクトにコードを含めることもできますし、ダウンロードしてプロジェクトのサブフォルダ( 'lib /'フォルダなど)に手動でインストールすることもできます。 – oldtechaa
これはおそらく私がやろうとしていることですが、私のコードがディレクトリをファイルとして検出する理由についてはまだ混乱しています。 – QuillAndSaber