0

ユーザーから txt ファイルを要求し、同じ場所にある複製されたファイルで編集された名前で正確なコピーを複製したいと思います。

例: ユーザーは /file/works/done/abc.txt を提供します

複製されたファイルは、/file/works/done/abc_edited .txt である必要があります

ファイルを複製することはできますが、必要なファイルに名前を追加することはできません。仮定:$fileユーザーからの引数です。例: $fileis /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 に答える