• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定のデータを更新する)

特定のデータを更新する方法

このQ&Aのポイント
  • 特定のデータを更新する方法についてまとめました。データの追加を防ぐための処理方法や、最新のデータのみ表示・保存する方法について説明します。
  • プログラムにおけるデータの更新方法について解説します。データの変更を行いつつ、追加を避ける処理方法や、最新のデータのみ残す方法をご紹介します。
  • データを更新する方法について説明します。データの変更時に行が増えないようにする方法や、最新のデータのみ残す処理方法についてまとめました。

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

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

> foreach $m (@txt) { $m .= "\n"; } ここでは意味の無い記述だと思われ > $new_n = (split(/,/,$m))[0]; > if((split(/,/,$m))[0] ne $new_n){ [0]に相当するのは、ここでは1992や1994といった数値の部分になると思いますが(初めのテキストファイルの中身のままだとすれば)それだと ne ではなく != とします。 文字列なら ne で数値なら != です。 $mに新しいデータはちゃんと入っていないと思われ。 (localで局所化しているのにどこでも代入されていない。また、前述の foreach $m (@txt) { $m .= "\n"; } の部分で上書きされる) > print TXT $txt; foreach で配列@TXTを廻すときに変数を$mとしているのになぜに$txt?

aoitorigairu
質問者

お礼

回答ありがとうございました。まだ改変がうまくいっていないのですが、 >foreach $m (@txt) { $m .= "\n"; } の部分 の部分がないとテキストファイルに書き込むときに 改行していないファイルができあがることが わかりました。 なので、変数に値はわたっていることがわかり ました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

名前の部分において、同姓同名(字が同じ)の人物がいないとすれば、それをキーにして以下のようにできます。 初めのファイルdetaの中身が↓とする 1992,岩田実,東京都港区 1994,青山徹,神奈川県横浜市 1998,箕輪茂樹,沖縄県那覇市 例えば↓が新しい(変更後)のデータとする $new = '1992,岩田実,埼玉県青葉郡'; open(FH, "+< data"); flock(FH,2); @list = <FH>; truncate(FH,0); seek(FH,0,0); $new_n = (split(/,/,$new))[1]; foreach $data (@list){ if((split(/,/,$data))[1] ne $new_n){ print FH $data; }else{ print FH "$new\n"; } } close(FH); 変更後のファイルdataの中身は↓になる 1992,岩田実,埼玉県青葉郡 1994,青山徹,神奈川県横浜市 1998,箕輪茂樹,沖縄県那覇市 実際には、同姓同名漢字も同じというのは確率は低いながらもゼロではないので、別に一意な値となる番号でも用意してそれで実装することになります。

aoitorigairu
質問者

お礼

早速の回答ありがとうございます。 自分成りに組んでみたのですが、思うように動きません。 レコードは増えないのですが、全レコード消えたり、 編集されたあとのレコードが保存されていなかったり。 一応コードを載せておきますのでご指摘が あればよろしくお願いします。 sub write_txt1 { local($m); local($new_n); foreach $m (@txt) { $m .= "\n"; } &lock_open(TXT, "+<$txtfile1"); @txt = <TXT>; truncate(TXT,0); seek(TXT,0,0); $new_n = (split(/,/,$m))[0]; foreach $m (@TXT){ if((split(/,/,$m))[0] ne $new_n){ print TXT $txt; }else{ print TXT "$m\n"; } } print TXT @txt; #→全消去のため付加 &unlock_close(TXT); }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 教えて!ファイルの操作

    下記のテキストファイルを読み出したいです。 四つの変数に値を与えて、後の処理に使いたい。 データの間スペースで分かれた、最後に改行。 やり方を教えて! お願いします。 ******************* temp.txt ******************* 沖縄県 那覇市 26.12 127.41 鹿児島県 鹿児島市 31.33 130.33 宮崎県 宮崎市 31.54 131.25

  • データを条件で引っ掛けて、他のテキストに書出したい

    以前にもお世話になりました。 もう少し教えてください。2つのテキストファイルがあります。 KEN.txt------------------- 10 大阪府 20 奈良県 30 三重県 -------------------------- PRF.txt------------------- 1001 大阪府大阪市 1002 大阪府岸和田市 2001 奈良県天理市 2002 奈良県奈良市 2003 奈良県大和郡山市 3001 和歌山県橋本市 -------------------------- PRFのデータ前2文字とKENのデータを引っ掛けて、完成品としては下記のようなテキストをつくりたいのです。 そこで、Do~loopを使ってPRFをOPENして、その中でKENをOPENしようと試みました。 しかし、うまくできなかったのです。 下記のような出力はできますか??また、その方法を教えてください。 -------------------------- 大阪府 "大阪市" "岸和田市" 奈良県 "天理市" "奈良市" "大和郡山市" 和歌山県 "橋本市" --------------------------

  • テキストデータに関して

    お世話になっております。 PHPにてwebアプリケーションを作っており、その中でMySqlなどのDBを使用せず、保存すべきデータは、テキストファイル(.txt)を用いているのですが、URLでそのテキストファイルを直接読み込むと、当然ながらファイルの内容を読まれてしまいますが、ファイルの内容を読まれないようにする設定などはあるのでしょうか? 具体的には・・ .txtではなく、他の拡張子に変更することで、.txt同様の構造が作れるのであれば、それに越したことないが、その場合、ファイルの生成・内容書込みなどを行うPHPのソースは、単に拡張子を変更するだけで良い?また、その.txtに代わる拡張子は? .htaccessなどを用いてファイルの内容を外部から参照できなくする設定があると耳にしたことがあるが、読み書き可能としているファイル(属性606に設定)でも、.htaccessの設置は不具合はないのか? などです。これまでファイルの読み込み・書込みなどをものは作成したことが無く、お恥ずかしい質問かと思いますが、アドバイスなど頂戴できれば幸いです。 お忙しい中恐縮ですが、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 画像と説明文を別データで作りたい

    画像を条件で抽出して表示させたいのですが、可能でしょうか? pic1ならtext1、という感じで対になるテキストを用意して、 例えば「川」を表示したければ、 テキストの頭が「川」なら、対になる画像を表示させる、 という方法でいいかなぁと(^_^;) もっとスマートな方法があれば、 アドバイスお願いします<(_ _)> pic1.jpg(山の写真) text1.txt(山、富士山、静岡県、3,776m) pic2.jpg(川の写真) text2.txt(川、江戸川、千葉県、59.5km) pic3.jpg(湖の写真) text3.txt(湖、琵琶湖、滋賀県、670.33)   ・   ・

  • テキストデータについて

     私はちょっとした小説サイトを運営しているのですが、ブラウザ上で編集をするとときどき文字化けを起こしてしますので、txtファイルをエディタで編集してからホームページの記事に貼り付けたいんです。  しかしtxtデータをそのまま貼り付けるとサイズが小さいままのとても見にくくなってしまいます。  どなたか私にテキストデータで小説サイトに表示される文字サイズを変更するやり方を教えてください。

  • ファイルをコピーしたときのデフォルトのファイル名を変更したい

    windowsで同一フォルダ内にファイルをコピーすると、「コピー ~ *.*」というファイル名で複製されますが、この自動付与される接頭語区を変更することはできるのでしょうか。 具体的には、「テキスト.txt」を複数コピーした場合 「テキスト ~ コピー.txt」 「テキスト ~ コピー2.txt」 「テキスト ~ コピー3.txt」 というように、ファイル名の後半に付くように変更したいです。 よろしくお願い申し上げます。

  • データ挿入方法

    先日もお世話になりました。 いつもありがとうございます。 5ケタのコードと市町村名が書いたファイルがあります。 -------------------------------- 例)11111 大阪府大阪市北区 22222 和歌山県橋本市 33333 奈良県大和郡山市 -------------------------------- VBで別のテキストファイルの特定の場所へ全部まとめて挿入するにはどうすればよいですか? 宜しくお願いします。

  • txtファイルに書かれた"東京都”のダブルクォーテーションを消したい

    例えばsamplein.txtに以下のデータが書かれていたとします。 1000,"東京都港区","港一郎" 1001,"千葉県市川市","市川次郎" 1002,"大阪府大阪市","大阪三郎" これを"(ダブルクォーテーション)だけを全て取り除いてsampleout.txtに書き込むプログラムを作りたいのですが。 これには私の苦手な(どうでもいい事ですが)正規表現を使用します。 私の頭脳では難しい、という感じです。 ヒントでも構いません。どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 住所録を3カラムに分割方法

    下記左列のような住所録があり、それを右列のように3カラムに分割する方法を教えてください。Excelに限らず、テキストエディタなどでも(タブ切など)可能なら手段は問いません。 港区青山1-1-1 → 港区 青山 1-1-1 横浜市青葉区xxx町2-2-2 → 横浜市青葉区 xxx町 2-2-2 東大阪市長堂3-3-3 → 東大阪市 長堂 3-3-3 xx市xx群xx町4-4-4 → xx市 xx群xx町 4-4-4 都道府県は不要(ありません) 市+区なら、区で切ります 番地の数字は半角、全角 混在します(漢数字は目視で対応します) 一発置換でなくても、合わせ技でも結構です。 宜しくお願い致します。

  • コンボボックスのリストに、テキストファイルを取り込む方法は?

    こんにちは。初めて質問します。 実は昨日からVisualBasicを購入して、データベースに取り組んでいます。 ところで、コンボボックスのリストに、テキストファイルのデータを随時取り込む方法はあるんでしょうか? 例、C:\町名.txt ●●市,▲▲町, ××市,××村,