如何将部分文件内容打印到屏幕上?

时间:2013-05-14 03:42:58

标签: linux perl shell io

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

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

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

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

2 个答案:

答案 0 :(得分: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;

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