#! perl -slw use strict; # s[0]*31^(n-1)+s[1]*31^(n-2)+ ... +s[n-1] sub JavaHash { use integer; my ($s) = @_; my $n = length $s; my @s = unpack 'C*', $s; my $hash = 0; my $p = 1; for ( reverse @s ) { print "$hash : $_: $p"; $hash += $_ * $p; $p *= 31; } return $hash; } die 'No arguments' unless @ARGV; printf '%10d:%s' , JavaHash( $_ ), $_ for @ARGV;