use Digest::MD5 qw(md5); my $md5 = md5($data); my $end = substr($md5, -5) & "\x7f\xff\xff\xff\xff"; my $acu = 0; $acu = $acu * 256 + ord $_ for split(//, $end); printf "%012.0f\n", $acu;