in reply to Quick and Dirty Hash

There are a large number of hashing algorithms you could use. Most of them work better in C / C++ than Perl, however, since you really need unsigned numbers, and there doesn't seem to be a simple way to tell Perl you don't want a signed variable. The following should work ok for strings of more than a few characters:
use strict; use warnings; print hash('dfsdgogmoerigre'); BEGIN { my @c = (0..9, 'A'..'F'); my $c = $#c + 1; sub hash { my ($n, $r) = 0; for (split //, $_[0]) { $n = ord($_) + ($n << 6) + ($n << 16) - $n; } $n = abs($n); while ($n >= $c) { $r .= $c[$n % $c]; $n /= $c; } return $r; } }