2013-09-03 3 views
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 없는 이름 바꾸기

어떻게 이름을 변경 않는 발생?

답변

5

당신은 아마에만 줄 바꿈 제거 chomp에 입력이 필요합니다

chomp(my $input = <>); 

을 그리고 당신은 항상 오류 $! 수행하는 파일 작업을 확인해야합니다 또한

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

, 가장한다 ||이 우선 순위가 높으므로 || 대신에 or을 자주 사용하십시오.

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

논리적 또는 ||$file가 잘못된 값으로 발생하지 않는 한 die 문, 결코 일어나지 않을 것입니다 쉼표 ,보다 높은 우선 순위를 가지고 있기 때문에 예를 들어, 다음은 일반적인 초보자 실수, 즉 발견 오히려 어렵다 .

+0

잘 작동합니다. 나는 chomp를 사용하지 않았다. 감사합니다 –

+0

@ user2628315 당신을 환영합니다. 동의한다는 것을 잊지 마십시오. – TLP

+0

or 및 |에 대해 확실히 명심하십시오. –