Как вывести один экран за раз в Perl - PullRequest
1 голос
/ 31 мая 2010

При выполнении сценария perl из командной строки, как я могу убедиться, что мой вывод не прокручивается за пределы экрана?

Другими словами, как мне подражать функциональности unix "more" или«меньше» команд?

Ответы [ 4 ]

6 голосов
/ 31 мая 2010

Модуль Term :: Pager может показаться вам нужным.

3 голосов
/ 31 мая 2010

Разве пользователь не может просто передать вывод less? Это дает им возможность использовать свой любимый пейджер или даже вообще не использовать пейджер, если они этого предпочитают.

1 голос
/ 31 мая 2010

Для быстрого и грязного можно передать текст меньше или больше:

my $text = <<'EOD';
Lots
   and
      lots
         of
           text
EOD

my $pager = $ENV{PAGER} || 'less';
open(my $less, '|-', $pager, '-e') || die "Cannot pipe to $pager: $!";
print $less $text;
close($less);

Существуют различные флажки "меньше / больше", позволяющие сценарию продолжаться, когда он достигает нижней части текста.

1 голос
/ 31 мая 2010

Как говорит Матти Вирккунен, лучше, чтобы пользователь передал ваш скрипт на less.

Пользователь * nix будет ожидать вывод в виде простого текста, поэтому он (и) может передавать его другим командам, если это необходимо. Если ваш сценарий не отображает вывод в виде простого текста, ваш пользователь может найти его менее пригодным для использования.

...