2013-05-14 101 views
0

我想將命令輸出存儲到一個文件(工作正常),然後我想要做的是將文件內容顯示到屏幕上。 我的問題是,我希望它在部分中顯示(例如,一次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

回答

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