ハッシュ
4-1. ハッシュとは
ハッシュに関してはc言語と同じく、単に値を格納するだけでなく、
キーと値のペアを配列に格納できる。
ハッシュの変数のことを、ハッシュ変数といい、
% (パーセント) + 英字1文字から始まり、それ以降は数字、英字
およびアンダースコア ( _ ) を用いることが出来る。
また大文字と小文字が区別されるので、
例えば %a と %A は別物として扱われる。
(例)
構文例
意味
%prog = ("nlp", "user", "lang", "perl");
%prog に nlp と user 及び lang と perl という
文字列をそれぞれのペアで代入されている
4-2. ハッシュ関数
Perlにはハッシュを操作するための関数として、次のような関数が用意されている。
これらの関数を用いることでハッシュの処理が容易になる。
関数
意味
keys
すべてのキーを取り出す
values
すべての値を取り出す
each
1組のキーと値を取り出す
delete
特定の要素を取り除く
keys (すべてのキーを取り出す)
例)
%prog = ("nlp", "user", "lang", "perl", "univ", "ritsumei");
@array = keys (%prog);
print "@array";
<出力結果>
univ lang nlp
※ 出力順が一定でないのはハッシュが順序付けられた配列でないため
values (すべての値を取り出す)
例)
%prog = ("nlp", "user", "lang", "perl", "univ", "ritsumei");
@array = values (%prog);
print "@array";
<出力結果>
ritsumei perl user
each (1組のキーと値を取り出す)
each関数は、どのペアが取り出されるかが不定であり、
しかも1組だけが抽出されるので、通常while構文と併用した形で使用される。
例)
%prog = ("nlp", "user", "lang", "perl", "univ", "ritsumei");
while (($key, $val) = each (%prog)) {
     print "KEY-> $key: VALUE-> $val \n";
}
<出力結果>
KEY-> univ: VALUE-> ritsumei
KEY-> lang: VALUE-> perl
KEY-> nlp: VALUE-> user
delete (特定の要素を取り除く)
例)
%prog = ("nlp", "user", "lang", "perl", "univ", "ritsumei");
delete $prog{"lang"};
while (($key, $val) = each (%prog)) {
     print "KEY-> $key: VALUE-> $val \n";
}
<出力結果>
KEY-> univ: VALUE-> ritsumei
KEY-> nlp: VALUE-> user
BACK TO TOP