2010-12-04 12 views
0

perlでコマンドライン経由で出力する方法があったのかどうか疑問に思っていました。 * Nixではless/moreのように。私はstackoverflowのアーカイブで何かを発見したが、私はそれが私のために働くとは思わない。Perl - フルスクリーンスクロール

出力する必要があるのは、画面サイズを検出し、小さなウィンドウでもフルスクリーンウィンドウでも、「フルスクリーン」が何であるかを知り、小型モニターまたは大型モニターでこれを行うことができます。

誰かがPerlモジュールTerm :: Pagerを参照しました。多分誰かがこれを手伝うことができます。しかし、どこにも「オート」や、本当のフルスクリーンが何であるかを知るためのものが見当たらなかった。その理由は、(デザインのために)プログラムが生成する出力の量に起因するため、私は "ページング"機能が必要です。 12/4 9:45 CSTのよう

コードは

open MORE, '|more' or die "unable to start pager"; 
    open my $fh, '<', $file or die "can't open <$file> for reading $!"; { 
    local $/ = "TYPE:\n"; 
    while (my $record = <$fh>) { 
     [ .. snip snip ...] 

は、どのように私は別のopen文にこれをやって行くのでしょうか?

+0

質問に間違いがありました。謝罪。近い投票を無視してください。 –

+0

いいえ、これはPerlに関する質問です。私はOSのコマンドラインではなく、これを行うプログラムを望んでいます - 私はそれにコマンドを配管していません。私はそれを実行しており、perlアプリケーションにページングをさせる。 – drewrockshard

+0

あなたのコメントを更新していただきありがとうございます。 – drewrockshard

答えて

2

にちょうどパイプの出力を以上以下:

open MORE, '|more' or die "unable to start pager"; 
print MORE "hello $_!\n" for 1..1000; 
+1

私の質問が更新されました。私はこれがうまくいくことを確認しましたが、私の環境では動作しませんが、オープンステートメントのネスト時に修正する方法を知っているかもしれません。 – drewrockshard

2
#!/usr/bin/env perl -CLA 
use 5.010; 
use utf8; 
use strict; 
use autodie; 
use warnings qw< FATAL all >; 
use open qw< IO :utf8 :std>; 
use sigtrap qw< stack-trace normal-signals error-signals >; 
END { close STDOUT } 

if (-t STDOUT) { 
    my $pager = $ENV{PAGER} || "less"; 
    open(STDOUT, "| $pager"); 
} 

あなたはPythonやJavaのようなinfernallyいらいらすることを好む場合:

あなたに勝つ必要がある
use Carp; 
$^W = 1; 
local $SIG{__WARN__} = sub { confess "untrapped warning" }; 

特定のポストモダニスト卑劣な仲間の友人、しかしあなたが彼らの尊敬を評価するかどうかは私が言うことではありません。

+1

私の更新を元の質問に読んでもわからない - 「ページ」出力が必要だが、ファイルから読み込んでいるので、これをどう扱うべきかを知る必要がある。 – drewrockshard

+1

何を扱うのですか? – tchrist

+0

このようなコードを貼り付けるのを見たことがあります。私は自分のコードを書き直すように求めていません。私にアイデアやコードサンプルを提供したい場合は、私の現在のコードに従ってください。これは、あなたが他のものをたくさん含んでいるとき、とても混乱させます。 whileループ中のすべてのページをどのようにページするかを知る必要があります。私の全体的な質問を読み返す。あなたの解決策は私には分かりません。 – drewrockshard