2016-04-20 51 views
0
use Text::CSV; 
$csv = Text::CSV->new; 
open(HIGH, "+>Hardtest.csv") || die "Cannot open ticket $!\n"; #reads the high file 
while(<HIGH>) 
{ 
    print "Printing High Priority Tickets ...\n"; 
    sleep(1); 
    print <HIGH>; 
} 
close(HIGH); 

ここに私のコードがありますが、私はCSVファイルを読み込もうとしていますが、CSVファイルを読むことはできません。CSVファイルを読み込んでCSVファイルに書き込む

+0

作成した '$ csv'をまだ使用していません。 –

答えて

2

OK、多くのものがここにあります。

  1. 常にuse strictuse warningsです。
  2. CSVファイル書き込みモードを開いています(追加モード?)。あなたがそれを読んでいるなら、それをしないでください。
  3. || dieを使用しないでください。or dieを使用してください。
  4. 最後に、の代わりにprint <HIGH>を使用しないでください。
+0

''の印刷を避ける理由は、 'while'がすでにファイルから行を読み込んでいるためです。 – oldtechaa

+1

はい、whileループは一度に1行ずつファイルを読み込んでいます( '$ _'に各行を入れています)ので、' 'を印刷すると次の行を印刷することもできますし、 、それは単に何も印刷しないかもしれない、すべてが「悪い」です。 – jimtut

0

私はあなたのコードを少し変更した:

#!/usr/bin/perl -w 
use strict; 
use Text::CSV; 

my $csv = Text::CSV->new; 
open(HIGH, "+<Hardtest.csv") || die "Cannot open ticket $!\n"; #reads the high file 
while(<HIGH>) 
{ 
    print "Printing High Priority Tickets ...\n"; 
    print $_; 
    sleep(1); 
} 
print HIGH "9,10,11,12\n"; 
close(HIGH); 

私に説明してみましょう: 1.「+>」読み取り/書き込みモードでファイルを開きます、しかし、また、既存のファイルを上書きします。したがって、あなたのコードではwhileループは決して入力されません。私はそれを "+ <"に変更しました。これは追記モードでの読み書きを意味します。 2. 2番目の最後の文は、上記のコードでは、新しいコンテンツをCSVファイルに追加します。

関連する問題