Любой хеш-функции будет достаточно - просто обрежьте ее до 4 байтов и преобразуйте в число. Хорошие хеш-функции имеют случайное распределение, и это распределение будет постоянным независимо от того, где вы усекаете строку.
Я предлагаю Дайджест :: MD5 , потому что это самая быстрая реализация хеша, которая поставляется со стандартным Perl. String :: CRC, как упоминает Pim, также реализован на C и должен быть быстрее.
Вот как вычислить хеш и преобразовать его в целое число:
use Digest::MD5 qw(md5);
my $str = substr( md5("String-to-hash"), 0, 4 );
print unpack('L', $str); # Convert to 4-byte integer (long)