想知道是否有一种方法可以通过命令行在 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 ...]
我该如何对另一份公开声明执行此操作?
只需将输出通过管道传输到 less 或 more:
open MORE, '|more' or die "unable to start pager";
print MORE "hello $_!\n" for 1..1000;
#!/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" };
这应该会为你在某些后现代主义势利圈子里赢得朋友,但你是否重视他们的尊重就不是我说了算的了。