使用用户输入名称重命名文件

Ad-*_*vic 1 perl perl-module

我想将我的临时文件"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没有重命名

我该如何重命名?

TLP*_*TLP 5

您可能只需要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恰好是假值.