- ベストアンサー
perlでファイルの読み方
次のような入力ファイルがあったときに、EOFまでのデータを番号1+番号2別にファイルに出力したいのですが、どのようにするのがいいでしょうか? できれば、入力したデータをハッシュか配列にいれてからデータを加工してファイルに出力したいと思っています。 入力ファイル 1.xxx 2.A EOF 1.xxx 2.B EOF 1.xxx 2.A EOF 1.www 2.B 出力ファイル ファイル1 1.xxx 2.A 1.xxx 2.A ファイル2 1.xxx 2.B ファイル3 1.www 2.B
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
入力データが上記の通りならこれで出来るはずです。 ただ、ファイル1に出力されるデータ同士が全く同じでないといけないので、「何故一つの出力ファイルで同じデータを繰り返すのか」が分かりませんが。 $ret="\n"; #改行コード open(IN, "in.txt"); @a=<IN>; close(IN); $b=join("",@a); @c=split(/EOF$ret/,$b); $e=1; foreach $d (@c){ if($f{$d} eq ""){ $f{$d} = $e; $e++; } open(OUT,">> $f{$d}.txt"); print(OUT $d); close(OUT); }
その他の回答 (1)
- TheBlackArtist
- ベストアンサー率0% (0/1)
入力をどの様に区切れば例のような出力になるのかがよく分からないのですが・・・ "EOF"で区切るならファイルは四つになるのではないでしょうか。
補足
入力ファイルには、文字列”EOF"を区切りに項目1と項目2を一塊のデータとして1ファイルに記述されています。 その一塊のデータを項目1と項目2でユニークになるようにファイルに出力したいと考えています。