Perl - 全屏滚动

问题描述 投票:0回答:2

想知道是否有一种方法可以通过命令行在 perl 中输出可滚动“一次一页”;就像 *Nix 中的 less/more 一样。 我在 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 ...]

我该如何对另一份公开声明执行此操作?

perl pagination fullscreen
2个回答
2
投票

只需将输出通过管道传输到 lessmore:

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" };

这应该会为你在某些后现代主义势利圈子里赢得朋友,但你是否重视他们的尊重就不是我说了算的了。

© www.soinside.com 2019 - 2024. All rights reserved.