想知道是否有办法通过命令行在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 ...]
我怎样才能将这个做到另一个公开声明?
答案 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" };
那应该在某些后现代主义的势利小圈中赢得你的朋友,但是你是否重视他们的尊重不是我要说的。