0

Perl を使用して、あるファイルの別のフォルダーへの単純なコピーを実行しようとしました

system("copy template.html tmp/$id/index.html");

しかし、エラーエラーが発生しました:The syntax of the command is incorrect.

に変更すると

system("copy template.html tmp\\$id\\index.html");

システムは別のファイルをtmp\$idフォラーにコピーします

誰かが私を助けることができますか?

4

1 に答える 1

3

File::CopyPerl ディストリビューションに付属の を使用することをお勧めします。

use strict; use warnings;
use File::Copy;

print copy('template.html', "tmp/$id/index.html");

Windows ではスラッシュやバックスラッシュについて心配する必要はありません。モジュールが処理してくれるからです。

現在の作業ディレクトリからの相対パスを設定する必要があることに注意してください。そのため、ディレクトリと両方template.htmltmp/$id/そこにある必要があります。その場でフォルダを作成したい場合は、 をご覧くださいFile::Path


更新:以下のコメントに返信してください。

このプログラムを使用して、フォルダーを作成し、ID のインプレース置換を使用してファイルをコピーできます。

use strict; use warnings;
use File::Path qw(make_path);

my $id = 1; # edit ID here

# Create output folder
make_path("tmp/$id");
# Open the template for reading and the new file for writing
open $fh_in, '<', 'template.html' or die $!;
open $fh_out, '>', "tmp\\$id\index.html" or die $!;
# Read the template
while (<$fh_in>) {
  s/ID/$id/g;       # replace all instances of ID with $id
  print $fh_out $_; # print to new file
}
# Close both files
close $fh_out;
close $fh_in;
于 2012-07-30T11:15:04.727 に答える