2017-05-30 3 views
-2

そのかのう前に印刷結果を置き換える:Perlのprintループとperlの出力にSimple.csvの</p> <p>内容印刷結果を交換する

string1 
string2 
string3 

マイスクリプト:

#!/usr/bin/perl 
use strict; 
use warnings; 
my $file = 'simple.csv'; 
open my $info, $file or die "Could not open $file: $!"; 
while(my $line = <$info>) { 
    sleep(2); 
    print $line ; 
} 

close $info; 

出力にそのように:

string1 
string2 
string3 

1行で出力を変更するには、string1のように置き換えてください。次にstring2を置き換えてから文字列3を置き換えてください。

+1

申し訳ありません申し訳ありませんが、この質問を少し明確にする必要があると思います。あなたは何をしようとしているのですか、何を試してみましたか? – Daz

+0

お返事ありがとうございますので、お互いを交換するような出力をお願いします – bambeach

+0

入力してください...? – ssr1012

答えて

1

改行文字の適用を制御するにはprintfを使用してください。バックスペース(\b)を使用して、最後の出力行を後ろに移動するか、キャリッジリターン(\r)を発行して行の先頭に移動するだけです。ラインバッファリングも無効になっています。このようなものはあなたの要件を満たしています(私はそれを理解しています)。

#!/usr/bin/env perl 
use strict; 
use warnings; 
my $file = 'simple.csv'; 
open my $info, '<', $file or die "Can't open '$file': $!\n"; 
$|++; #...don't buffer output... 
while (my $line = <$info>) { 
    chomp $line; #...remove ending newline... 
    # printf "%s%s", $line, "\b" x length($line); # alternative-1 
    printf "%s\r", $line;      # alternative-2 
    sleep 2; 
} 
close $info; 
print "\n";   #...leave a clean output... 
+0

はい+1ありがとうございます。これは私が意味するものです – bambeach

+0

@bambeachこれで問題が解決したら、回答を受け入れてマークアップしてください – JRFerguson

0

希望すると、印刷文自体がそれを行うことができます。

#!/usr/bin/perl 
use strict; 
use warnings; 
my $file = 'simple.csv'; 
open my $info, $file or die "Could not open $file: $!"; 
while(my $line = <$info>) { 
     chomp($line); 
     print "$line\r"; 
     sleep(2); 
} 

close $info; 

このキャリッジリターンは、印刷ごとに行の先頭に移動します。