2010-12-04 13 views
0

perl에서 명령 줄을 통해 출력 할 수있는 방법이 있다면 "한 번에 한 페이지"스크롤 할 수 있는지 궁금합니다. * Nix에서는 less/more를 좋아합니다. stackoverflow 아카이브에서 뭔가를 발견했지만, 그것은 나를 위해 작동한다고 생각하지 않습니다.Perl - 전체 화면 스크롤

작은 화면이든 전체 화면 창이든간에 "전체 화면"이 무엇인지 알기 위해 화면 크기를 감지하고 출력 할 필요가 있으며 작거나 큰 모니터에서이 작업을 수행 할 수 있어야합니다.

누군가가 Perl 모듈 Term :: Pager를 참조했습니다. 어쩌면 누군가가이를 지원할 수 있습니다. 그러나 "자동"또는 출력물을 가지고있는 것과 같은 어떤 것도 진정한 전체 화면이 무엇인지 알지 못했습니다. 그 이유는 프로그램이 (디자인으로 인해) 생성 할 출력량 때문입니다. "페이징"기능이 필요합니다. 12/4 중부 표준시 오전 9시 45분의 같은

코드

open MORE, '|more' or die "unable to start pager"; 
    open my $fh, '<', $file or die "can't open <$file> for reading $!"; { 
    local $/ = "TYPE:\n"; 
    while (my $record = <$fh>) { 
     [ .. snip snip ...] 

어떻게 열려있는 다른 문에이 일을 가겠어요?

+0

나는 그 질문을 오해했다. 사과. 가까운 투표를 무시하십시오. –

+0

아니요, 이것은 Perl에 대한 질문입니다. 이 프로그램은 OS 명령 줄이 아니라이 작업을 수행하기를 원합니다. 나는 명령을 파이프하지 않습니다. 나는 그것을 실행하고있는 펄 애플 리케이션 페이징을하고있다. – drewrockshard

+0

할거야 :) 귀하의 의견을 업데이트 주셔서 감사합니다. – drewrockshard

답변

2

단지 파이프 적은 또는 에 출력 :

open MORE, '|more' or die "unable to start pager"; 
print MORE "hello $_!\n" for 1..1000; 
+1

내 질문이 업데이트되었습니다. 나는 이것이 작동한다는 것을 확인했지만, 제 환경에서는 작동하지 않을 것입니다. 그러나 열린 문장을 중첩 할 때 어떻게 수정해야하는지 알 것입니다. – drewrockshard

2
#!/usr/bin/env perl -CLA 
use 5.010; 
use utf8; 
use strict; 
use autodie; 
use warnings qw< FATAL all >; 
use open qw< IO :utf8 :std>; 
use sigtrap qw< stack-trace normal-signals error-signals >; 
END { close STDOUT } 

if (-t STDOUT) { 
    my $pager = $ENV{PAGER} || "less"; 
    open(STDOUT, "| $pager"); 
} 

파이썬이나 자바 같은 infernally 성가신 선호하는 경우 :

use Carp; 
$^W = 1; 
local $SIG{__WARN__} = sub { confess "untrapped warning" }; 

을 승리해야 특정 포스트 모던주의 속물 동그라미에서 친구지만, 존경심을 소중하게 여기는 것은 내가 말할 수있는 것이 아닙니다.

+1

원래 질문에 대한 나의 업데이트를 읽었는지 확실치 않은 경우 - "페이지 출력"이 필요하지만 파일을 읽는 중이므로 처리 방법을 알아야합니다. – drewrockshard

+1

어떻게 처리할까요? – tchrist

+0

전에 이런 코드를 붙여 보았습니다. 내 코드를 다시 작성하라고 요구하는 것이 아닙니다. 아이디어 나 코드 샘플을 제공하려면 현재 코드를 따르십시오. 이렇게하면 다른 것들을 포함 할 때 혼란스러워집니다. while 루프에있는 모든 것을 페이지하는 법을 알아야합니다. 내 모든 질문을 다시 읽는다. 당신의 해결책은 나에게 이해가되지 않습니다. – drewrockshard