dポイントプレゼントキャンペーン実施中!

お世話になります。
多分ご存知の方には簡単な話だと思いますが教えていただけませんか。
Aフォルダにあるhoge.txtをBフォルダにコピーしたければ
use File::Copy;
copy "./A/hoge.txt", "./B/hoge.txt" or die $!;
で出来るのはわかっているのですが、Aフォルダにある全てのファイルをBフォルダにコピーするというのはどのようなコードを書いたらよいのでしょう。
ちなみにAフォルダには100以上ファイルがあります。ファイルは全部テキストファイルです。

A 回答 (5件)

$src_dir = "./a";


$dst_dir = "./b";

opendir(DIR, "$src_dir");
my @Files = grep { -f "$src_dir/$_" && /\.txt/ } readdir(DIR);
closedir DIR;

foreach my $file (@Files) {
copy ...
}

こんな感じですかね

この回答への補足

すみません。ほとんど素人なんで。。。その『copy ..』のところも明記してもらうとすごく助かるんですけど、お願いできませんでしょうか

補足日時:2009/02/03 20:39
    • good
    • 0

ヒントでは無理なようなので、具体的に・・・。


例では、./log/A/○○.txt のようなパスの場合の記述です。

my $dir = '/log';# 対象ディレクトリ名(相対パスでもOKです)

opendir DH, $dir or die "$dir:$!";
while (my $file = readdir DH) {
use File::Copy;
copy "./A/$file, "./B/$file" or die $!;
}
closedir DH;

以上。未チェックですが。
    • good
    • 0
この回答へのお礼

結局いろいろ自身でも勉強して、#1の方の回答を理解できました。
おかげさまで何とか目的を果たせました。
他にも沢山のご指導をいただけて感謝しています。
何か回答を追う毎に話が難しくなってきたようです。私の理解の範疇を超えてきました。早く皆様の域に達せられるように努力します。

お礼日時:2009/02/19 00:25

ファイルの再帰的なコピーをする場合、unixで提供されている


cp -R(又は-r)コマンドが使用できます。
これをsystem関数を使用して、呼び出してはいかがでしょうか。
    • good
    • 0

や, 多分 #2 は


use File::Copy::Recursive;
して
rcopy_glob
使えってことなんだろうけど...
rcopy_glob("./A/*.txt", "./B");
みたいな感じで使えるんじゃないかなぁと思う. ちなみにそこで参照してる URL の内容がチンプンカンプンなのはしょうがないね. 誤訳が多すぎ. これなら英語を読んだ方がまだ意味がわかる... と書きたいところだけど英語も微妙にあやしい気がする.
    • good
    • 0

File::Copy::Recursive でいいやん

この回答への補足

foreach my $file (@Files) {
File::Copy::Recursive;
}
ですか? エラーは出ませんがファイルもコピーされません。
検索してこんなページ見つけたけど・・・あぁチンプンカンプン
http://perldoc.jp/docs/modules/File-Copy-Recursi …

補足日時:2009/02/03 21:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!