0

我想向用户请求一个 txt 文件,并复制一个完全相同的副本,其名称在同一位置的复制文件上编辑。

例如:用户提供 /file/works/done/abc.txt

复制的文件需要是 /file/works/done/ abc_edited .txt

我可以复制文件。但是,我不能将名称附加到我希望拥有的名称上。假设:$file是用户的参数,例如:$file是/file/works/done/abc.txt 代码如下:

my $a = '_edited'; 
my $duplicatedfile = $file.$a; 
copy($file,$duplicatedfile) or die "Failed to copy $file: $!\n 

执行后,复制的文件是 /file/works/done/abc.txt_edited 但是我希望拥有的是 /file/works/done/abc_edited.txt

4

2 回答 2

1

向我们展示一些代码和您遇到的问题,但请不要要求我们为您编写全部内容。您可能希望查看该File::Copy模块以了解易于使用的“复制文件”方法。

哦,好吧,在阅读了您的评论后,您似乎只需要类似的东西

my $new_file_name = $file;
$new_file_name =~ s/\.([^\.]+)$/_edited.$1/;
于 2012-08-24T08:02:56.400 回答
0
use File::Basename;

my $full_path = '/file/works/done/abc.txt';
my ($name, $path, $ext) = fileparse($full_path, qr/\.[^.]*/);
my $new_full_path = $path.$name.'_edited'.$ext;

print $new_full_path;
于 2012-08-24T10:43:28.010 回答