我想将我的临时文件"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");
Run Code Online (Sandbox Code Playgroud)
OUTPUT没有重命名
我该如何重命名?
您可能只需要chomp输入即可删除换行符:
chomp(my $input = <>);
Run Code Online (Sandbox Code Playgroud)
并且$!在执行文件操作时应始终检查错误:
rename($foo, $bar) or die "Cannot rename: $!";
Run Code Online (Sandbox Code Playgroud)
此外,您应该最常使用or而不是||,因为||具有更高的优先级.例如,这是一个常见的初学者错误,很难发现:
open my $fh, "<", $file || die $!; # WRONG!
Run Code Online (Sandbox Code Playgroud)
因为逻辑或||优先级高于逗号,,所以die语句永远不会发生,除非$file恰好是假值.