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; } }