1

我想将我的临时文件“file3.c”重命名为用户输入文件名。使用 File::copy 中的重命名或移动命令不会重命名它。

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 回答