• ベストアンサー

データファイルの編集

回答のほうをよろしくお願いします。 過去の投稿にも似たよう内容がいくつかあったのですが、 理解できなかったため再度質問させていただきます。 PerlでCSVファイルのデータファイルで特定行の内容をテキストボックスに表示させて、 内容を編集して上書き保存したいのですが、どんなプログラムになるのでしょうか? 一応、特定行を表示させるとこまでできているのですが、 どうやって特定行のみを上書き保存するのかがわかりません。 Perlは初心者レベルですので、分かりやすい回答をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

arms7010さんがご存知の"特定行を表示させる"方法にもよりますが,もし,その方法がファイルをいったん配列に格納して,表示する方法であれば,書き換えは簡単です。 いま,下記のようなcsvファイルがあるとすると #data.txt-------------------- a1,b1,c1,d1 a2,b2,c2,d2 a3,b3,c3,d3 a4,b4,c4,d4 #---------------------------- 上記のファイルをいったん配列に読み込み,例えば2行目を表示するのであれば, #============================= $data = "data.txt"; open IN,"$data" or die $!; #ファイル全体を配列に格納 @data = <IN>; #2行目を表示 print $data[1]; #============================= となります。 表示した2行目を書き換えたいのであれば, #============================= $data[1] = "a5,b5,c5,d5\n"; #============================= というように,表示した配列の番号に直接代入を行えば,そこのデータは書き換わります。 書き換え後の全体のデータをファイルに出力するのであれば, #============================= $outfile = "kekka.txt"; open OUT,">kekka.txt" or die $!; print OUT @data; #============================= とすれば,出力されます。

arms7010
質問者

お礼

丁寧な回答ありがとうございました。 やはり、ランダムアクセスができないので、 ファイル全体を保存する仕組みなのですね。 おかけで仕様を満たすことができました。

関連するQ&A