ハッシュ関数
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 を参考にしました。つかほとんどそのまんまですが、ちょっとしたバグ(とゆー程のもんでもないが)があったので。