- ベストアンサー
Perlでいうハッシュとはどのようなものでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご存知かもしれませんが下記サイトに記載がありました^^。
その他の回答 (2)
- sakusaker7
- ベストアンサー率62% (800/1280)
> 3.データ(表やデータベース)の高速検索技法(ハッシュ表) > > Perlの場合は1又は2のようですね。 > アルゴリズムでは3が良く出てきます。 いや、Perlでも3.ですけど? ハッシュ技法(表)を使って実現しているデータ構造だから ハッシュと称しているだけのことです。 実際、同じものをPerl 4までは連想配列と呼んでいました。 Perl 5になって呼称が変わったのは Larry Wallらしい逸話があったりします。 ちなみに、同様の構造をPythonでは辞書(Dictionary)と呼んでいます。
- ymmasayan
- ベストアンサー率30% (2593/8599)
若干補足します。 hash とはごちゃ混ぜにすると言う意味です。 余談ですがハヤシライスは「ハッシュドライス」がなまったものと言う説も有ります。 さて、hashはキー変換で実現しますが大きく分けて3つの意味があります。 1.単純なキー変換 2.簡易的な暗号化 3.データ(表やデータベース)の高速検索技法(ハッシュ表) Perlの場合は1又は2のようですね。 アルゴリズムでは3が良く出てきます。
関連するQ&A
- perlのハッシュについて
perlのハッシュでキーから値を得ることは出来ますが、その逆に値からキーを得るような関数ってありますか?探してもみつかりませんでした。識者の方々教えてください。
- ベストアンサー
- Perl
- perl ハッシュ エラー
現在perlの勉強中で、ハッシュの項目まできました。しかし、use strictにするとこのコードがエラーになります。 #!/usr/bin/perl use strict; use warnings; print "Content-type:text/html\n\n"; $hoge{"key1"} = "value1"; print $hoge{"key1"}; exit; ヴァージョンは5.8.9です。use strictをコメントアウトすればエラーはでません。どうしてエラーになってしまうのでしょうか?どうすればエラーを出さずに表示することができるのでしょうか?どうかご教授ください。よろしくお願いします。
- ベストアンサー
- Perl
- 「Perl」ハッシュの使い方について
Perlのハッシュで気軽に多次元配列のようなことをしたいのですができますか? (下記のコードで一応動きましたが、本当にこういった機能があるのか自信がもてません。) もし、可能である場合、 $fruits{'apple'}{'甘い'} = "リンゴ"; $fruits{'melon'}{'甘い'} = "メロン"; 以外の代入方法があれば教えてください。 また、 print values %$fruits; が表示されません。 表示させる方法はありますか? 以上、ご存知の方、居られましたらぜひ教えてください。 宜しくお願い致します。 -test.cgi----------------------------------------- print "Content-Type: text/plain\n\n"; $fruits{'apple'}{'甘い'} = "リンゴ"; $fruits{'melon'}{'甘い'} = "メロン"; print '結果:'.$fruits{'apple'}{'甘い'}; print "\n"; print '結果:'.$fruits{'melon'}{'甘い'}; print "\n"; print keys %fruits; print values %$fruits;# <<表示されない exit; -----------------------------------------
- ベストアンサー
- CGI
- (Perl)ReadParseによるハッシュへの格納について
PerlのReadPerseについて質問させてください。 以下少々長いですが、過程を書きます。 <form>タグにより、入力フォームのページをHTMLで作成したとします(form.html)。 その際、<form method="post" action="form.cgi"> と入力しておいて、別途form.cgiを作成するとします。 form.htmlには、<form>タグ内のname属性で、それぞれ'weight' 'height' 'age'という三種類のデータを入力してもらって、取得するようにしています。 そして<input type="submit" value="登録">による、 登録ボタンを押すことで、 form.cgiに処理をさせるようにしています。 form.cgiの中身ですが、まず、最初の三行を書きます。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); となるのですが、わからないのが、 三行目の &ReadParse(*form); です。 サブルーチンReadParseを引数*formで、 cgi-lib.plから呼び出しているということはわかるのですが、いきなり*formという形で、ハッシュを登場させているあたりがわかりません。(この際、ハッシュ名の前の%を*に変えなければならないことは、一応知っております。理由はわかりませんが。) そこで質問なのですが、 いきなり、ハッシュであるformを登場させていいものなのでしょうか?? 以下、form.cgiの内容です。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); $name=$form{'weight'}; $sex=$form{'height'}; $megane=$form{'age'}; print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "体重:${weight}<br>\n"; print "身長:${height}<br>\n"; print "年齢:${age}<br>\n"; print "</body>"; print "</html>"; _END_
- ベストアンサー
- CGI
- Perlは戻り値で、ハッシュや配列を正しく返さないのでしょうか?
Perlは戻り値で、ハッシュや配列を正しく返さないのでしょうか? 返せるように見えて実際は、歯抜けのデータなど、不安定で使い物になりません。 よって、リファレンスでスカラー値で利用するのが正論でしょうか? $a = ''; %b = (); @c = (); ○ return ($a, \$b, \$c); × retuen ($a, %b, @c); ○ my ($a, $b, $c) = aru_kansuu($hikkey, ('komori')); × my ($a, %b, @c) = aru_kansuu($hikkey, ('komori'));
- ベストアンサー
- Perl
- ハッシュ関数について質問です。
プログラミング・数学? 初心者です。 IDやパスワード管理によく出てくる一次方向(ハッシュ)関数ですが、 よくパスワードとSALTを一緒にしてハッシュ関数を通してハッシュ値を取得しますよね。 そしてその結果(データベースなどに記録済み)とログイン時に入力した値とを照らし合わせるわけですが、 昔まだ若いころ、これとは別のタイプのハッシュ関数を使用したことがあります。 それはある(パスワードなどの)値をハッシュ関数で処理すると「いろんなハッシュ値」が生成され、 そのハッシュ値から当然パスワードは予測できないのですが、 しかしその複数のハッシュ値は全て、そのパスワードから生成されたハッシュ値だということは分かる、という関数を使用したことがあります。 その時はperlのcpanモジュール(名前を覚えていません。すいません。)を使ったのですが、この別のタイプのハッシュ関数はどういう仕組みで作られているのでしょうか? SALTが複数あり、そのそれぞれについて照合している?だけでしょうか? それとも私が無知で、そんな関数がそもそも存在するだけでしょうか? わかりません。教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- ハッシュのリファレンスを戻り値にしたい
PHPでハッシュのリファレンスを戻り値にする方法が知りたいです。 perlでは return \%hash; ですが、phpではどうなるのでしょうか? 他に別の方法があるのでしたらそれでも構いません。
- ベストアンサー
- PHP
- Perlのハッシュ変数のソートについて
ハッシュ変数の並べ替えをやりたいです。ただ、値の長さでソートをしたいのです。 my %tan_syouhin = ( '佐賀' => 'あいうえお', '滋賀' => 'かき', '無我' => 'さしすせそそそ', '千賀' => 'うりるら', '日我' => 'ぜるだんぽ' ); というハッシュ変数があって「値の長さ」でソートするにはどうしたら良いでしょうか?
- ベストアンサー
- Perl
- Perlのサブルーチンの引数に配列やハッシュをCall by Valueすることはできない?
タイトルどおりなんですが・・・。 Perlのサブルーチンに配列やハッシュを実体渡ししようとしたんですが,どうやってもできません.あきらめて,参照渡しにしたら,なんかうまくいっている模様です. これは,そもそも,はじめから参照渡ししか用意されていない、ということでしょうか?.それとも,何か実体渡しする方法があるのでしょうか?. 後,余談なんですが,配列やハッシュの要素に別の配列やハッシュの実体を入れることはできるのですか?.これもちょっと試してみたらできなさそうだったのですが,あちこちのWebにある入門マニュアルみたいなページを見ても,その辺の話が「できる」とも「できない」ともほとんどの場合かいてなくて,自分の試し方が悪いのか,それとも無駄なことを延々とやっているのかがわからなくて疲れます.
- 締切済み
- Perl