2013-09-03 4 views
1

Я хочу переименовать мой временный файл «file3.c» в имя файла ввода пользователя. Использование команды rename или move из 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 не происходит переименование

Как переименовать его?

ответ

5

Вы, вероятно, нужно только chomp ввод для удаления символа новой строки:

chomp(my $input = <>); 

И вы всегда должны проверить ошибки $! при выполнении операций с файлами:

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

Кроме того, вы должны наиболее часто используют or вместо ||, так как || имеет более высокий приоритет. Например, это обычная новичок ошибки, что довольно трудно обнаружить:

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

Поскольку логические или || имеет более высокий приоритет, чем запятая ,, то die утверждения никогда не произойдет, если $file не бывает ложное значение ,

+0

Он отлично работает. Я не использовал chomp. спасибо –

+0

@ user2628315 Добро пожаловать. Не забудьте принять. – TLP

+0

Обязательно помните, что касается и/или || –

Смежные вопросы