Perl - 全屏滚动

时间:2010-12-04 14:56:15

标签: perl paging screen fullscreen

想知道是否有办法通过命令行在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 个答案:

答案 0 :(得分:2)

只需将输出传输到 less 更多

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

答案 1 :(得分: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" };

那应该在某些后现代主义的势利小圈中赢得你的朋友,但是你是否重视他们的尊重不是我要说的。

相关问题