2010-12-04 3 views
0

Было интересно, был ли способ вывода в perl через командную строку прокручиваемой «страницей за раз»; подобный меньше/больше в * Nix. Я нашел что-то в архивах stackoverflow, но я не думаю, что это сработает для меня.Perl - полноэкранная прокрутка

Мне нужно выводить, чтобы определить размер экрана и узнать, что такое «полный экран», будь то небольшое окно или действительно полноэкранное окно, и иметь возможность делать это на маленьких или больших мониторах.

Кто-то ссылался на модуль Perl Term :: Pager - может быть, кто-то может помочь с этим. Однако нигде я не видел ничего такого, как «авто» или что-то, чтобы узнать, что такое настоящий полный экран. Причина в том, что из-за объема вывода, который будет генерироваться программой (из-за дизайна), мне нужна функция «подкачки».

код от 12/4 9:45 AM CST

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

Я не понял вопрос. Извиняюсь. Пожалуйста, игнорируйте закрытый голос. – 2010-12-04 15:00:12

+0

Нет, это вопрос о Perl. Я хочу, чтобы программа выполняла это, а не в командной строке ОС - я не связываю с ней какие-либо команды; Я запускаю его, и приложение perl выполняет подкачку. – drewrockshard 2010-12-04 15:01:29

+0

Будет делать :) спасибо за обновление вашего комментария. – drewrockshard 2010-12-04 15:02:54

ответ

2

только труба выход на менее или более:

open MORE, '|more' or die "unable to start pager"; 
print MORE "hello $_!\n" for 1..1000; 
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"); 
} 

Если вы предпочитаете быть адски раздражает, как Python или Java:

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

Это должно победить вас друзья в определенных постмодернистских сноб-кругах, но не цените ли вы их уважение не для меня.

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