テキストデータを編集して再保存する方法

このQ&Aのポイント
  • Perlの初心者、勉強中の者です。テキストデータを編集して再保存する方法を教えてください。
  • テキストデータをカンマ区切りのTextファイルに保存し、HTMLで一覧表を表示する方法を教えてください。
  • 読み込んだテキストデータを編集し、同名ファイルに再保存するプログラムを作成したいです。どのような方法がありますか?
回答を見る
  • ベストアンサー

テキストデータを編集して再保存する方法

Perlの初心者、勉強中の者です。 下記のようなテキストデータを、入力して、カンマ区切りのTextファイルに保存して、一覧表をHTMLで表示できるまでは作成できたのですが、 =============== 氏名,住所,性別 山田,大阪,男 加藤,東京,女 木下,島根,男 太田,宮城,女 =============== 読み込んだ後、テキストボックスにデータ配置して、編集変更をして同名ファイルに再保存したいのですが、どんなプログラムになるのでしょう。 読み込んで、配列にデータを入れて、テキストボックスにそのデータを配置して表示するところまでやった後・・・んっこれから先どうすればいいんだろう?という状態になっています。 宜しくお願いします。

  • Perl
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

そうですね、シーケンシャルアクセスしかできません。 seekを使って読み書きのファイルポインタを移動することができますが、書き込む長さが違っていれば上書きされてしまうので使えません。 ファイル名変更 rename (src, dst) ファイルの削除 unlink (target) です。

参考URL:
http://tohoho.wakusei.ne.jp/www.htm
souta_n
質問者

お礼

再度のご回答ありがとうございます。 あれこれやっているのですが、現在、書き込む以前のところで止まっています。 ちょっと質問の仕方を変えてもう一度投稿してみようと思っています。また宜しくお願いします。

その他の回答 (1)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

ファイルの途中だけを変更することはできませんので、新しいファイルを作ってその中に変更後のデータを順次格納していくしかないでしょう。 元のファイル名を予め別の名前に変更し、書き出すファイルを希望するファイル名にするか、書き出すファイルを一時的なファイル名で作り、全て書き出した後もとファイルを消すかリネームし、新しいファイルを希望するファイル名にリネームする。 と言う方法です。後者の方が良いと思います。

souta_n
質問者

お礼

なるほど、別ファイルにいったん保存するのですね。 Perlはシーケンシャルアクセスしかできないのでしょうか? 重ね重ねすいませんが、Perlで元のファイルをDeleteするのと、不ファイル名をRenameするのは、どんな記述になるのか教えていただけませんでしょうか?

関連するQ&A

  • データの保存方法について

    VB.netについての質問です。 フォームにテキストボックスとコンボボックスとボタンが取り付けられている状態で、ボタンを押すとテキストボックスとコンボボックスのデータを、指定したフォルダにテキストファイルで保存させる、というプログラムは可能でしょうか? 保存形式はテキストファイル以外でも構いません。 よろしくお願いします。

  • テキストファイルへの書き込み方法について

    テキストファイルがある場合は、データを読んでリストボックスに表示をさせ、追加の場合はテキストボックスに入力した項目をテキストファイルの一番後ろの 入れる事は出来ましたか? また、テキストファイルのデータの並び方からを昇順で保存することは出来ますか? 文章が適切ではないかもしれませんがよろしくお願いします。

  • Wordの保存方法をテキストファイル(.txt)にしたらテキストボックス内のデータが消えてしまいます。

    おはようございます。ちょっとした理由でWordで作成した文章をtext形式にして保存しなければならないのですが、その際テキストボックスの内データが消えてしまいます。これはテキストエディタそのものがテキストボックスを画像として認識しているために表示することが出来ないのでしょうか? またWordで作成したテキストボックスの文字をtext形式に保存した際も見ることは可能なのでしょうか? もしよろしければお答えいただきたいのですが。

  • VB6 テキストファイルへの保存方法

    みなさん教えてください。 いまVB6.0で、テキストボックス(textbox1)に入力するデータ(数値)を名前を指定するテキストファイルに内容を保存したいと考えています。 これをやろうと、下記のように構文を作成したのですが、何故かうまくいきません。 みなさんアドバイスを頂けないでしょうか。 宜しくお願いします。 Private Sub Command1_Click() Dim StrFN As String Dim sw As System.Io.StreamWriter 'テキストファイルを上書きで保存する StrFN = Application.GetSaveAsFilename("", "測定データ(*.txt),*.txt,全てのファイル(*.*),*.*", , "測定データファイル名指定") 'ダイアログ表示 If Dir(StrFN) <> "" Then If vbYes <> MsgBox("同名ファイルがあります。" & vbLf & _ "上書きしますか?", vbYesNo) Then Exit Sub End If End If sw = StrFN '書込み sw.Write (textbox1.Text) sw.Close () End Sub

  • Outlook 6.0のメールデータをテキストデータで保存する方法!

    標記のとおり、Outlook 6.0のメールデータをテキストデータで保存する方法を調べています。 できればメール1ファイルに対してテキストデータ1ファイルで保存したいです。(ただし、複数メールの内容を1つのテキストデータにする方法があればそれでも可です) 似ている質問はあるのですが、イマイチ手順がわかりません。 一番簡単にできてお勧めの方法をご存知の方がいらっしゃいましたら教えていただけませんか?おねがいします。

  • 入力データの保存方法

    インプットタグのテキストボックスに入力したデータを 保存する方法がわかりません。 保存することは出来るのでしょうか? よろしく御願いします

  • テキストの保存で「*.txt」を"*"でない文字にしたい

    テキストの保存で「*.txt」を"*"でない文字にしたい テキストを保存する時に「*.txt」が名前としてあり、リネームしないと保存できません。 面倒なので「新しいファイル.txt」とでもしたいのですが出来ますでしょうか。 また保存場所に同名のファイルがある場合は「新しいファイル~コピー1.txt」 と言うような感じにしたいです。 windowsXP、使用するアプリはメモ帳です。(厳密にはメモ帳でないです)

  • フォーム上で作成したデータをエクセルシートに転記

    テキストボックスやコンボボックスなどを配置したフォームを作成してデータをエクセルシートと保存していきたいのですが、上書きされてしまいデータが蓄積できません。 また、保存したデータをフォーム上に呼び出し若しくは検索して、データ修正を行った後に上書き保存できるようにしたいので、よろしくお願いします。 ※テキストボックスやコンボボックスなどのタグに対象のセル値を指定しています

  • データファイルの編集

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

    • ベストアンサー
    • Perl
  • 250万行1ギガbのテキストデータを分割して、それぞれテキストファイルとして保存したい

    250万行1Gbのテキストデータを分割して、それぞれテキストファイルとして保存して、 アクセスやエクセルで開きたい。 当方、VISTAです。 250万行1Gbのテキストデータを分割して、それぞれテキストファイルとして保存して、アクセスやエクセルで開きたいです。 ソフト「ファイル裁断+」だと、分割できましたが、テキストファイルでない形式なので、結局、再マージするしかないかと・・・ ソフト「div」は、なぜか、実行中の後、データが消えてしまいます。データが重すぎるのか、VISTAだからなのか・・・ ソフト「Em Editor」で、地道に切り取り→貼り付けして分割しようにも、10万行とかの貼り付けはできないようです。 ちゃんと起動してくれるなら、有料でもかまいません・・・ どうぞ、よろしくお願い致します。