0

我正在尝试将命令输出存储到一个文件中(工作正常),然后我想要做的就是将文件内容显示到屏幕上。我的问题是我希望它分部分显示(例如一次 20 行)并让用户按[Enter]或任意键继续下一部分。我正在考虑将文件内容通过管道传输到more但是它一次显示整个文件内容,而不是按部分进行。

这是我负责打开文件,写入文件,然后将其显示在屏幕上的代码部分。

open FILE, '>', $filename;
print FILE @command;

open FILE, '<', $filename;
while (<FILE>) {
    open MORE, '| more';
    print MORE;
}
close MORE;
close FILE;
4

2 回答 2

2

您只需要open more退出循环:

close FILE;
open FILE, '<', $filename;
open MORE, '| more';
while (<FILE>) {
    print MORE;
}
close MORE;
close FILE;

或不使用更多:

open my $file, '<', $filename or die("$!");
while (@command) {
    print join("\n", splice(@command, 0, 20));
    <>; 
}
close $file;
于 2013-05-14T03:59:22.117 回答
2
use strict;
use warnings;

my @command = map "output line $_\n", 1..100;

my $page_size = 20;
my $n = 0;

for my $line (@command) {
    print $line;
    $n ++;
    if ($n % $page_size == 0) {
        print "--More--";
        <>;
    }
}
于 2013-05-14T13:25:04.193 回答