如何将部分文件内容打印到屏幕上?
问题描述:
我想将命令输出存储到一个文件(工作正常),然后我想要做的是将文件内容显示到屏幕上。 我的问题是,我希望它在部分中显示(例如,一次20行),并让用户按[Enter]
或任何键继续下一部分。我正在考虑将文件内容传送到more
,但是它会一次显示整个文件内容,而不是按部分进行。如何将部分文件内容打印到屏幕上?
这是我负责打开文件,写入文件,然后在屏幕上显示它的代码的一部分。
open FILE, '>', $filename;
print FILE @command;
open FILE, '<', $filename;
while (<FILE>) {
open MORE, '| more';
print MORE;
}
close MORE;
close FILE;
答
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;
如果你已经有了存储在'输出@命令“,一次只打印20行。无需从刚刚写入的'FILE'中读取。或者我误解了一些东西? – FMc 2013-05-14 03:51:30
我省略了将ps存储到'@command'的代码的第一部分,然后创建一个文件并将其写入'@command'的结果。我怎样才能一次显示20行? – Tomala 2013-05-14 03:58:17