Perl - полноэкранная прокрутка - PullRequest
0 голосов
/ 04 декабря 2010

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

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

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

Код от 12/4 9:45 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 ...]

Как мне поступить так с другим открытым заявлением?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010
#!/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" };

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

2 голосов
/ 04 декабря 2010

просто перенаправить вывод на меньше или больше :

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