• ベストアンサー

ハッシュって?

Perlで、「ハッシュ」という概念が出てきますが、 どのような意味ですか? どんなプログラムを作成する時に便利なのでしょうか? なるべく早くお答えいただいた方からポイントを差し上げます。

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

  • ベストアンサー
  • poposan
  • ベストアンサー率20% (3/15)
回答No.4

上記の人の方の通りハッシュは連想配列という意味です。 で、ハッシュと配列のどちらが良いか、という質問に対しては、どちらも良いし、どちらも悪い。ということです。 ハッシュには、順番の指定が出来ない。(一番最初に呼んだデータが、一番最初に出力されない) 配列は、キーとデータを取得しにくい。ということです。 しかし、ハッシュにデータを格納して、そのハッシュを配列の中に入れてしまえば、ハッシュに順番が与えられるのです。 下記の場所で検索か、質問をしてみると良いです。ためになりますよ。

参考URL:
http://www.parkcity.ne.jp/%7Echaichan/bin/qanda.cgi?modefg=9
u16
質問者

お礼

なるほど そういう観点で使えるんですね。 よく分かりました。

その他の回答 (4)

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.5

>私はデータベースは全て配列@で扱っているのです。 >「配列」よりも「ハッシュ」を使ったほうが便利なのは >どのような時なのでしょうか? そうですね~。はいれつでやっちまう、といってしまえば、それはそれでOKな気も・・・(というのは、PERL言語の配列は他の言語と違って、えらく柔軟性が高いと言うかなんと言うか、だいたい、型が違うものを配列にできるってどう言うこと? っていうか何の配列? とまぁ、C/C++系出身者などは思ってしまいますのですが・・・) たとえば、次みたいなときに、ちょろっと使ってみるとか。。。 %ENGINE = ( yahoo => { url => 'http://search.yahoo.co.jp/bin/search?', keyword => 'p', }, goo => { url => 'http://www.goo.ne.jp/default.asp?', keyword => 'MT', }, infoseek => { url => 'http://www.infoseek.co.jp/Titles?sv=JP&tds=0&', keyword => 'qt', }, google => { url => 'http://www.google.com/search?lr=lang_ja&', keyword => 'q', }, fresheye => { url => 'http://search.fresheye.com/?', keyword => 'kw', }, excite => { url => 'http://www.excite.co.jp/search.gw?c=japan&lk=excite_jp&', keyword => 's', }, lycos => { url => 'http://www.lycos.co.jp/cgi-bin/pursuit?cat=jp&', keyword => 'query', }, ); とかね。

u16
質問者

お礼

たびたびすいませんです。 Perlの配列って柔軟性が高いようなんで いつもそうしてました。 いろいろなアドバイスありがとうございました。

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.3

ハッシュとは「連想配列」もしくは「セット」といわれるものです。 「連想配列」のような概念が、「既存組みこみの変数」として実現されているのは珍しいかもしれません。Perl言語の特徴がかいまみえます。 C++やJavaなどの言語でも、「組みこみ変数」ではなく、「ライブラリ」として実現されています。 この連想配列とは一般的に「データベース構築」の基礎概念となるものです。 例えば、学校などでは、「学籍番号」なるものがあり、 「何番の生徒?」と問いただせば、「鈴木太郎」などというように、わかりますよね。その逆に「鈴木太郎?」と問いただせば、「何番の生徒」ということもわかります。 このように、それぞれの「学籍番号」とそれに対応した「生徒名」、この組み合わせ(連想)が、数多くある(配列)、ことから、連想配列というのです。

u16
質問者

お礼

ご丁寧な回答 ありがとうございます。 なかなか使いこなすのは時間がかかりそうです。 私はデータベースは全て配列@で扱っているのです。 「配列」よりも「ハッシュ」を使ったほうが便利なのは どのような時なのでしょうか? もしよろしければアドバイスください。

  • N-T
  • ベストアンサー率40% (15/37)
回答No.2

ハッシュとハッシュ関数というのは別物ではないのですか。 下はPerl&CGIに関する解説サイトです。

参考URL:
http://www.rfs.co.jp/sitebuilder/perl/03_03.html
u16
質問者

お礼

このホームページずっと昔、見たことがありました。 あらためて見てみるとよく分かりました。 どうもありがとうございます。

  • x-game
  • ベストアンサー率42% (80/189)
回答No.1

こんにちは. 参考URLにリンク張っておきました. また,CGIのカテゴリに書き込まれているので下のアドレスも参考になると思います(多少ハッシュについても載っています). http://www.parkcity.ne.jp/~chaichan/src/perl01.htm

参考URL:
http://www.math.s.chiba-u.ac.jp/~matsu/gpg/gpg-0.html#hash
u16
質問者

お礼

なるほど。 ハッシュ関数というのもあるんですね。 参考になりましたがちょっと私のほしい答えと違っちゃいました。 またお願いします。