こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

データファイルの編集

回答のほうをよろしくお願いします。

過去の投稿にも似たよう内容がいくつかあったのですが、
理解できなかったため再度質問させていただきます。

PerlでCSVファイルのデータファイルで特定行の内容をテキストボックスに表示させて、
内容を編集して上書き保存したいのですが、どんなプログラムになるのでしょうか?

一応、特定行を表示させるとこまでできているのですが、
どうやって特定行のみを上書き保存するのかがわかりません。

Perlは初心者レベルですので、分かりやすい回答をお願いします。

投稿日時 - 2007-05-01 17:57:07

QNo.2965396

困ってます

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

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;
#=============================
とすれば,出力されます。

投稿日時 - 2007-05-01 23:32:46

お礼

丁寧な回答ありがとうございました。

やはり、ランダムアクセスができないので、
ファイル全体を保存する仕組みなのですね。

おかけで仕様を満たすことができました。

投稿日時 - 2007-05-02 14:23:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問