2013-10-29 3 views
0

다른 파일의 입력을 사용하여 파일로 출력하려고합니다. 키보드 입력이 없습니다.다른 파일의 입력을 사용하여 파일로 출력

올바른 길을 가고 있음을 알고 있습니다. 구문이 약간 벗어났습니다.

기본적으로 특정 레코드를 선택하고 "bootlog.out"파일로 출력하는 패턴 일치를 사용하여 "boot.log"파일에서 레코드를 가져옵니다. 아직 패턴 매칭 부분에 익숙하지 않았습니다. 다음은 내가 가지고있는 것입니다 ...

open (BOOTLOG, "boot.log") || die "Can't open file named boot.log: $!"; 

while ($_ = <BOOTLOG>) 
{ 
print $_; 
} 

open (LOGOUT, ">bootlog.out") || die "Can't create file named bootlog.out: $!\n"; 

close (LOGOUT) || die "Can't close file named bootlog.out: $!\n"; 

close (BOOTLOG) || die "Can't close the file named boot.log: $!"; 

bootlog.out에 boot.log의 내용을 어떻게 인쇄합니까?

EDIT1는

이것은 두 번째 파일에 대한 입력 및 출력을 수행하는 것으로 보인다. 구문이 올바른가요?

open (BOOTLOG, "boot.log") || die "Can't open file named boot.log: $!"; 

open (LOGOUT, ">bootlog.txt") || die "Can't create file named bootlog.out: $!\n"; 

while ($_ = <BOOTLOG>) 
{ 
print $_; 
print LOGOUT $_; 
} 

close (LOGOUT) || die "Can't close file named bootlog.txt: $!\n"; 

close (BOOTLOG) || die "Can't close the file named boot.log: $!"; 
+1

항상'엄격한 사용; 경고를 사용하라. – Kenosis

답변

2

출력 파일 핸들 LOGOUTprint과 함께 사용하십시오. 또한 실제로 인쇄하기 전에 출력 파일 핸들을 열어야합니다.


open (BOOTLOG, "boot.log") || die "Can't open file named boot.log: $!"; open (LOGOUT, ">bootlog.out") || die "Can't create file named bootlog.out: $!\n"; while (<BOOTLOG>) { print LOGOUT $_; } close (LOGOUT); close (BOOTLOG); 

:
은 bareword는 파일 핸들을 사용하지 않는 것이 좋습니다. 다음과 같이 나는 코드의 조각 위에 재 작성 선호 :

use strict; 
use warnings;  

open my $fh_boot_log, '<', 'boot.log' or die "Can't open file 'boot.log': $!"; 
open my $fh_log_out, '>', 'bootlog.out' or die "Can't create file 'bootlog.out': $!\n"; 
while (<$fh_boot_log>) 
{ 
    print $fh_log_out $_; 
} 
close $fh_log_out; 
close $fh_boot_log; 
+0

저는 방금 시작했습니다. 가능한 한 간단하게 코드를 작성하려고합니다. 도움을 주셔서 감사합니다,하지만 당신이 준 조언은 레코드와 출력 파일을 만들지 않습니다. – LMN0321

+0

@ LMN0321 오류가 있습니까? 그렇지 않으면 작동 할 것입니다. – jkshah

+0

아니요 오류가 표시되지 않고 출력 파일을 만들지 못했습니다. 내가 여분의 라인을 추가하고 그 일을하는 것 같았다, 그게 올바른 구문인지 또는 파일에 실제로 쓰는 경우 확실하지 않습니다. – LMN0321

2

또 다른 해결책을 마법 <diamond operator> 사용 :

#!/usr/bin/env perl 

use strict; use warnings; 

while (<>) { 
    print; 
} 

사용을 에 :

$ perl script.pl <input.txt> output.txt 
관련 문제