1

一時ファイル「file3.c」の名前をユーザー入力ファイル名に変更したいと考えています。File::copy から rename または move コマンドを使用しても、名前は変更されません。

use strict;
use warnings;
use File::Copy;

#input header file
print "Input file1:\n";
$input = <>;
open(FILE1, $input) || die "couldn't open the file!";

open(FILE3, '>>file3.c') || die "couldn't open the file!";
...
#some work on file3.c
...

close(FILE1); 
close(FILE3);

#renaming prepended temporary file name to original file name
rename("file3.c", "$input");

OUTPUT の名前変更は発生しません

名前を変更するにはどうすればよいですか?

4

1 に答える 1

5

改行を削除するには、おそらく入力するだけchompで済みます。

chomp(my $input = <>);

$!また、ファイル操作を実行するときは、常にエラーを確認する必要があります。

rename($foo, $bar) or die "Cannot rename: $!";

また、優先順位が高いため、or代わりに を最も頻繁に使用する必要があります。たとえば、これはよくある初心者の間違いであり、発見するのはかなり困難です。||||

open my $fh, "<", $file || die $!;  # WRONG!

論理 or||はコンマよりも優先順位が高いため、たまたま偽の値でない限り,dieステートメントは発生しません。$file

于 2013-09-03T09:51:56.153 に答える