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

问题描述:

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

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

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

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

如果你已经有了存储在'输出@命令“,一次只打印20行。无需从刚刚写入的'FILE'中读取。或者我误解了一些东西? – FMc 2013-05-14 03:51:30

+0

我省略了将ps存储到'@command'的代码的第一部分,然后创建一个文件并将其写入'@command'的结果。我怎样才能一次显示20行? – Tomala 2013-05-14 03:58:17

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

你只需要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;