2013-05-14 4 views
0

명령 출력을 파일에 저장하려고합니다. 그러면 파일 내용을 화면에 표시합니다. 내 문제는 부품을 (예를 들어 한 번에 20 줄) 표시하고 사용자가 [Enter] 또는 다음 부분을 계속하기 위해 어떤 키를 누르게하려는 것입니다. 나는 파일 내용을 more으로 파이핑하는 것에 대해 생각하고 있었지만 부분적으로 작업하는 대신 전체 파일 내용을 한 번에 표시합니다.파일 내용을 화면에 인쇄하는 방법은 무엇입니까?

다음은 파일 열기, 쓰기 및 화면에 표시에 대한 책임이있는 코드 부분입니다.

open FILE, '>', $filename; 
print FILE @command; 

open FILE, '<', $filename; 
while (<FILE>) { 
    open MORE, '| more'; 
    print MORE; 
} 
close MORE; 
close FILE; 
+1

이미 출력이'에 저장 가지고 있다면 @ 명령'을 사용하면 한 번에 20 줄을 출력 할 수 있습니다. 방금 쓴 'FILE'에서 읽을 필요가 없습니다. 또는 나는 오해가 무엇입니까? – FMc

+0

ps를 '@command'에 저장하는 코드의 첫 번째 부분을 생략 한 다음 파일을 작성하고 '@command'의 결과를 기록합니다. 한 번에 20 줄을 표시하려면 어떻게합니까? – Tomala

답변

2
use strict; 
use warnings; 

my @command = map "output line $_\n", 1..100; 

my $page_size = 20; 
my $n = 0; 

for my $line (@command) { 
    print $line; 
    $n ++; 
    if ($n % $page_size == 0) { 
     print "--More--"; 
     <>; 
    } 
} 
2

당신은 루프 밖으로 open more이 필요합니다 사용

close FILE; 
open FILE, '<', $filename; 
open MORE, '| more'; 
while (<FILE>) { 
    print MORE; 
} 
close MORE; 
close FILE; 

사용하거나 사용하지 않고 더 :

open my $file, '<', $filename or die("$!"); 
while (@command) { 
    print join("\n", splice(@command, 0, 20)); 
    <>; 
} 
close $file; 
관련 문제