ハッシュ関数

perlのハッシュ(連想配列)ではなく、wikipedia:ハッシュ関数

#!/usr/bin/perl -W
@buf = qw(ab 1 cdef 22 ghijk 333);

for ($i=0 ; $i<@buf ; $i +=2)
{
    $key   = $buf[$i];
    $value = $buf[$i + 1];
    $hash  = &get_hash($key);

    print "hash\{$key\} = $value\n";
    $array[$hash] = $value;
}

print "hash cdef = $array[&get_hash('cdef')]\n";

# ハッシュ値を返す
sub get_hash
{
    local($_) = @_;

    print "in get_hash($_) ... ";
    $sum   = 0;
    @chars = split(//,$_);

    foreach (@chars)
    {
        printf "%d ", ord($_);
        $sum += ord($_);
    }

    printf "合計=%d 合計%%100=%d\n", $sum, $sum % 100;
    return $sum;
}

http://www.tohoho-web.com/lng/199912/99120361.htm を参考にしました。つかほとんどそのまんまですが、ちょっとしたバグ(とゆー程のもんでもないが)があったので。