如何将编辑名称的文件(用户输入)复制到同一目录?

时间:2012-08-24 07:59:57

标签: perl

我想从用户那里请求一个txt文件,并复制一个精确的副本,其名称在同一位置的重复文件上编辑。

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

重复的文件需要是/ file / works / done / abc_ 已编辑 .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

2 个答案:

答案 0 :(得分:1)

向我们展示一些代码和您遇到的问题,但请不要让我们为您写完整件事。您可能希望查看File::Copy模块,以获得易于使用的"复制文件"方法

哦,好了,看完你的评论之后,看起来你需要的就像是

my $new_file_name = $file;
$new_file_name =~ s/\.([^\.]+)$/_edited.$1/;

答案 1 :(得分: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;