ファイルの読み込みと出力
ファイルの読み込みと出力
Perl初心者です。よろしくお願いします。
file.csvのようなファイルを読み込んで、
out.csvのように出力するプログラムを作成しているのですが
途中で変な改行が度々入っているためどうしてもうまくいきません。
(file.csvですが、実際は1500行以上あります。
また、最後に必ずendが入っています。
下記のcsvですがテキスト形式で表示した内容です。)
初歩的な質問で申し訳ありません。
調べる限り調べたのですが分かりませんでした。
どうかよろしくお願いします。
「file.csv」
"2010/1/1","C","こんにちは","田中","end",
"2009/10/2","B","おはよう","斉藤","end",
"2007/3/20","E","Good mor
ning","佐藤","end",
"1988/8/16","F","こんばんは","中
村","end",
"1999/1/10","A","Hello","木村","end",
"2005/9/17","D","おはようご
ざいます","斎藤","end",
「out.csv」(このように出力したいです)
C,こんにちは,田中,2010/1/1,end,
B,おはよう,斉藤,2009/10/2,end,
E,Good morning,佐藤,2007/3/20,end,
F,こんばんは,中村,1988/8/16,end,
A,Hello,木村,1999/1/10,end,
D,おはようございます,斎藤,2005/9/17,end,
「今書いているプログラムです」
#!/usr/local/bin/perl
use strict;
use Fatal qw/ open /;
my $csv_file = "file.csv";
my @csv = &readCsvFile($csv_file);
open(OUT,">out.csv");
for(my $i=0; $i<=5; $i++){
print OUT $csv[$i][1],",";
print OUT $csv[$i][2],",";
print OUT $csv[$i][3],",";
print OUT $csv[$i][0],",";
print OUT $csv[$i][4],",";
}
close(OUT);
sub readCsvFile {
open(DATA, $_[0]);
while(<DATA>) {
chomp;
push @csv, [ split(/",\"/) ];
}
close(DATA);
return @csv;
}
お礼
ありがとうございます。 chomp $_; でグローバル変数に値を設定後、他の処理で参照していたことが原因でした。