• 締切済み

ハッシュのハッシュでデータベース

noname#25358の回答

noname#25358
noname#25358
回答No.2

 ハッシュのさらにハッシュ、というのがどういう仕様になっているのかよく分かりませんが、基本的に下記のソースを参考にしてもらえばいいと思います。 %hash = ("みちこ", 4, "さちえ", 5, "ゆうこ", 6); @keys = keys(%hash); open(OUT, ">datescadule.txt"); foreach $key ( @keys ) {   print OUT "$key とは $hash{$key} 日にデート\n"; } close(OUT);  これで、ハッシュ変数%hashの内容をすべてテキストファイルに書きだします。  どういう形式でファイルに収めるかは、”(ダブルクォート)で囲まれた部分を自分なりに変更することで決めてください。

taishi
質問者

補足

ご解答ありがとうございます。 いろいろ考えてみたのですが、配列のハッシュでもできるような気がしてきました。 さて、書いて頂いた方法ですと、ファイルにしたデータベースをハッシュとして再利用することができないように思えるのですが、パターンマッチなどを利用して取り出すということでしょうか?

関連するQ&A

  • DBMとハッシュ

    参考書を読んだ所、dbmデータベースは データの検索・削除等を行う場合に速くて良いとありました。 ここで質問なのですが、データベースのデータを変更せず データの参照のみを必要とする場合、 外部ファイル化して同じ効果を得られる別の方法… 例えば、ハッシュ配列をそのままdb.txtに保存して require 'db.txt'; としてみたり、 sub OKWeb { $OKWeb{'123'} = 'あいう';       ~ return $OKWeb{$_[0]}; } としてみたりといった方法と比べても速いのでしょうか。 また上記の方法以外にもっと速くデータを参照できる方法がありましたら教えて下さい。

    • ベストアンサー
    • Perl
  • 相互的な検索のできるハッシュテーブル?

    こんにちは。データ構造とアルゴリズムを学習しているJava入門者です。 「名前」と「電話番号」の二つのデータを格納するハッシュテーブルを実装したプログラムを考えています。名前をキーにして電話番号を呼び出すところまではいったのですが、 それと同時に電話番号と名前のどちらを入力しても、もう片方が検索できるようなプログラムを作れ、というのが今回の課題なのです。 基本的なハッシュテーブルの構造は学んでいるのですが、 どうしても「名前と番号、どちらのデータからも同じデータに辿り着く」ようなハッシュ関数が頭に浮かびません。 検索して色々調べてみたのですが、それらしい記事を見つけることが出来ませんでしたので、ここに投稿させていただきました。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • 動的な? 多次元ハッシュ

    text--------------------- 社会\t1 社会\t社会問題\t4 社会\t社会問題\t教育問題\t5 ---------------------text タブ区切りのテキストファイルを読み込んで 最後の値がハッシュ値になるような 深さがまちまちな多次元ハッシュをループで作りたいのです 手作業だと $HASH{社会}=1 $HASH{社会}{社会問題}=4 $HASH{社会}{社会問題}{教育問題}=5 できるだけ動作を軽くしたいので、evalや$1での置き換え等は 使いたくないのです どなたか教えてください

    • ベストアンサー
    • Perl
  • まったく同じファイルのハッシュが異なる原因について

    まったく同じファイルのハッシュが異なる原因は何でしょうか よくブログやシェアなどを通じて ゲームのOPムービーなどをダウンロードしますが、 製作社から配布される、同じソースのファイルでも、 それを直接ダウンロードせず、他の人を跨いで共有して頂くと 異なるハッシュ(MD5, SHA-1など)を持ってる場合があります。 本来ならば直接製作サイドからダウンロードするか、ハッシュ値を訊ねることも出来ると思いますが 会社が潰れていたり、昔の同人ものであるなどの場合、容易ではありません。 普通、破損してる動画なら、 動画のVideoとAudioをそれぞれ分離してハッシュをチェックすると、どちらが原因なのか明らかになり、 Videoだったら1frameくらい画面化けしていたり、Audioだったらホンの一瞬ノイズが発生していたりしますが… そのどちらのものでもない場合が時々あります。 VideoとAudioに分割して見ると同じハッシュを持ってるのに、動画自体のハッシュは異なる場合… これらの原因は何でしょうか、どうしたらどちらが変形されたものなのか判明できますでしょうか。

  • ハッシュ値チェック

    FastCopyにてデータのバックアップのためにコピーしたのですが、ベリファイをしていません。 FastCopyでは、後からサブフォルダの中までのベリファイが出来ないような説明を見ました https://groups.google.com/g/fastcopy/c/tRI21kykqqA それで、HDDx2の全階層ファイルをハッシュ値チェック・ベリファイが出来るソフトはありますか?

  • UBUNTUの書き込みソフトとOSのハッシュ値

    UBUNTU12.04を使ってます。デスクトップ環境はLXDEにしています。 この度、LINUXBEANのOSをメディアに焼こうと試みていて、ISOファイルをダウンロードしました。 そのファイルをダブルクリックしたところ、自動的に「ライディングを開始しますか?」というメッセージが出てきました。 おそらく、UBUNTUの中にさいしょから入っている、ライディングソフトがあるのだとおもいますが、このライディングソフトは信用できるものでしょうか? CDーRが一枚しかなく、できるなら最善の準備をして望みたいと考えています。 そして、もうひとつ気になるのは、「ダウンロードしたISOファイルは安全か?」ということです。 CDーRへのOSデータ書き込みを紹介しているサイトによっては「ハッシュ値のチェックを事前にすることを推奨しているケース」もあります。 ハッシュ値という言葉も、チェックの方法もよくわからないのですが、やはり事前にやらないと、OSデータが信用できるものと言いきれないないのでしょうか?

  • ハッシュ法でのデータ管理について教えてください

    ハッシュ法でのデータ管理をするプログラムを作りたいんですが長いことPASCALに触ってなかったせいか全く分かりません。 どなたか教えていただけないでしょうか??問題の概要は以下のようなものです。 表に登録するデータについては、キーは英数字からなる長さ8までの文字列でデータ本体は整数(型名はintegerでよい)です。 ハッシュ表のサイズは11とします。 ハッシュ関数は文字列xの各文字のASCIIコードの総和を11で割った余りとします。 さらにメニュー表示として入力した文字により行う操作を決定します。 どの文字がどのような操作を行うのかは以下のとおりです。 's' の場合: ハッシュ表に登録されている全レコードを,ハッシュ関数値毎に(キーの値とデータの両方を)すべて表示します. 'r' の場合: さらに「キーの値」と「データ」を入力し,すでに同じキーをもつデータがあれば「二重登録」として検出し,そうでなければ,そのレコードをハッシュ表に登録します. 'e' の場合: さらに「キーの値」を入力し,そのキーをもつデータがハッシュ表に登録されているならば, そのデータを表示します.さらに削除するかどうかを入力させて,削除する選択をした場合にはそのレ コードを削除します.そのキーをもつデータがハッシュ表にない場合には「そのキーをもつレコードが ないこと」を出力しますが,ハッシュ表には操作を加えません. 'i' の場合: ハッシュ表に登録されている全レコードを,キーの値が小さい順に表示します.ここで「キー の値の順」とは,文字列の辞書順のことを意味します.Pascal では,文字列a,b に対して,a がb より 辞書的順序が先(小さい) ときには「a<b」で表現できます. 'd' の場合: 「'i' の場合」の逆で,キーの値が大きい順に表示します. 'q' の場合: プログラムを終了します.具体的には,実行文部の最後の「end.」の直前までジャンプし ます. 長くなってすいません。ちょっとしたヒントでもいいので教えていただければ幸いです。

  • データベースの必要性について

    現在データベースの役割について勉強しています。 その中で、データベースの必要性として、以下のような説明があります。データベースが存在する前のデータ管理についてわからない為、 (1)~(3)が理解できません。 (1)~(3)について、具体的に教えてくださいませんか? よろしくお願いします。 -------------------------------- データベースが存在する前は、プログラムごとにデータを保持している。 以下のような問題点がありました。 (1)冗長性の問題:同じデータが複数のファイルに重複して存在する為、多くのデータ格納領域が必要になります。 (2)整合性の問題:データに変更があった場合、各プログラム毎のデータをすべて変更する必要があります。このため、データの更新漏れが発生しやすくなります。 (3)独立性の問題:プログラムは物理的にデータが格納されている位置を指定して処理していたため、データの構造が変わってしまうとプログラムも変更する必要がありました。

  • WEBでデータベース

    今はaccessでフォームを使ってデータの検索システムを作って使ってますが(一人で) これをWEB上で行う場合、どのようなプログラミング知識が必要なのでしょうか? 教えてgooの様に、テキストに検索文字を入力して 検索ボタンを押下して、検索結果を次のページに表示させたいです。 データベースだけはmdbファイルにありますがWEBの知識がなにもありません。 検索するパソコンは、データを持ってるパソコンとは何もネットワークでは繋がってません。

  • ハッシュ(オープンアドレス法) C言語の課題

    努力はしてみたのですが、C言語の課題ができません。教えていただけないでしょうか。 問:名前と年齢を入力し、名前をキーとしてハッシュ(オープンアドレス法)に登録する。'-'が入力されると登録を終了し、次に入力された名前をハッシュ法で検索し、あればその人のデータをハッシュから削除する、その後、ハッシュ表の内容を出力するプログラムを作成せよ。ただしハッシュ表の大きさは5とする。 例 koizumi  入力 1     入力 fukuda  入力 2  入力 aso 入力 3     入力 -     入力 koizumi  入力 fukuda(2) 出力 aso(3) 出力 ハッシュ関数は int hash(char *name) { int ret=0; while (*name)ret += *name++; return ret%5; } 再ハッシュ関数は int rehash(int h) { return (h+1)%5; } を使おうと考えています。 内容を理解できないと困るので簡単なプログラムをお願いします。 よろしくお願いします。