我想从用户那里请求一个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
答案 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;