ハッシュ

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