0

すべての印刷結果を同じ場所に上書きしたい。スクロールしないでください。そして私はそれを無限の時間にしたい。そのために while(1) を使用しましたが、正常に動作しています。しかし、問題は、ステートメントを印刷するたびに下にスクロールし、変更したいことです。印刷したいのですが、同じ場所に上書きしてください。

これで私を助けてもらえますか??

また、両方の印刷ステートメントで \r を使用しようとしましたが、同じ場所の最後の印刷ステートメントのみを更新します。

while(1)
{
.... // some lines of code //

print("\n******** Interrupts *********\n");
for($k=0; $k<$t_intr; $k++)
{
    $intr_diff = $total_intr_curr[$k] - $total_intr_prev[$k];
    #push(@intr_diff_arr,$intr_diff);
    print("Intr : $intr_diff\n"); // want to update this print at same place //

}

print("\n******** Context switches *********\n");

for($l=0; $l<$t_ctxt; $l++)
{
   $cntx_min = 0;
    $ctxt_diff = $total_ctxt_curr - $total_ctxt_prev;
    push(@ctxt_diff_arr,$ctxt_diff);
    $min = min @ctxt_diff_arr;
    $max = max  @ctxt_diff_arr;
    print("Ctxt : $ctxt_diff Minimum : $min Maximum : $max\n"); // want to update this print also at same place //
}

}// infinite while loop end //

ありがとうございました。

4

1 に答える 1

1

端末の設定で CR から NL へのマッピングがおかしい場合を除き、これでうまくいくはずです。

#!/usr/bin/env perl
use strict;
use warnings;

$| = 1;

foreach my $i (1..20)
{
    print "\rLine $i";
    sleep 1;
}
print "\n";

設定に注意してください$| = 1;。これは、出力を表示するために必要です。削除すると、出力の最後の行だけが表示され、それは 20 秒後にのみ表示されます。ただし、出力の 16 進ダンプは、すべてのデータが送信されたことを示しています。改行が印刷されるときに、最後にのみ送信されるだけです。

于 2013-09-28T21:12:19.447 に答える