Active PerlをWindows XPで動かしているとき、あるフォルダ(とその中のファイル)をコピーしようと思っています。

Perlでどのように書けば、フォルダのコピーができるでしょうか?

./folder01
というのが元のフォルダとして、
./folder02、folder03、folder04、folder05・・・・
という具合にフォルダ名を変えていくつも同じ場所にコピーする必要があります。

純粋なPerlで書けなければ、外部プログラムなどの呼び出しでもかまいません。
効率よくコピーできる方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/05/09 01:44:23
  • 終了:2008/05/11 02:44:15

ベストアンサー

id:ken33jp No.2

ken33jp回答回数928ベストアンサー獲得回数132008/05/09 08:08:53

ポイント160pt

http://www.rfs.jp/sb/perl/05/system.html

system関数で、copyコマンドとか実行すれば手早いですよ。

回答1と違い、外部コマンドを呼び出す方法です。

id:uta_at_home

なるほど。

system関数ってこう使えばいいんですね。

ありがとうございます!

2008/05/09 10:03:56

その他の回答(1件)

id:pmakino No.1

まきのっぴ回答回数352ベストアンサー獲得回数282008/05/09 03:12:19

ポイント160pt

File::Copy::Recursive を使うとできます。(ドキュメント日本語訳)

こんな感じですね。

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

dircopy('folder01', $_) for ('folder02', 'folder03', 'folder04', 'folder05');

id:uta_at_home

ありがとうございます。

こういうのがあったんですね。非常に助かります。

今Active Perlを動かせるPCが手元にないので、明日試してみます。

ありがとうございました!

2008/05/09 03:37:20
id:ken33jp No.2

ken33jp回答回数928ベストアンサー獲得回数132008/05/09 08:08:53ここでベストアンサー

ポイント160pt

http://www.rfs.jp/sb/perl/05/system.html

system関数で、copyコマンドとか実行すれば手早いですよ。

回答1と違い、外部コマンドを呼び出す方法です。

id:uta_at_home

なるほど。

system関数ってこう使えばいいんですね。

ありがとうございます!

2008/05/09 10:03:56
  • id:uta_at_home
    質問者です。

    1さんの回答の通りにやってみると、「Recursive.pmがみつからない」と言われたので、
    モジュールをダウンロードする方法を探す前に、2さんの回答のパターンでやってみました。

    system 'xcopy', '/i', '/y', $OrigFolder, $NewFolder;

    ↑こんな感じであっさりうまくできました。
    今のところこの方法で困ってないので、手抜きの感じがしないでもないですが、
    しばらくこれでいこうかと思います。

    何か不都合がでてきたら、1さんの回答にチャレンジしてみるかもしれません。
    どちらの回答も非常に参考になりました。
    ありがとうございました。
  • id:pmakino
    File::Copy::Recursive は標準モジュールではないので追加インストールが必要です。
    ActiveState のリポジトリに登録されているので、ppm でインストールできます。
  • id:uta_at_home
    pmakinoさん、追加情報ありがとうございます。
    ppmでOKだったらうれしいです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません