我尝试使用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
foler
有人可以帮助我吗?
答案 0 :(得分:3)
我建议你使用Perl发行版附带的File::Copy
。
use strict; use warnings;
use File::Copy;
print copy('template.html', "tmp/$id/index.html");
您无需担心Windows上的斜杠或反斜杠,因为该模块会为您解决此问题。
请注意,您必须设置当前工作目录的相对路径,因此template.html
和dir tmp/$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;