ClickBank is generous to provide code examples for many implementations of their Instant Notification Service, but… they don’t include Perl for some reason.
Here’s my Perl implementation.
use CGI;
use Digest::SHA1 qw(sha1_hex);
use Encode;
$q = new CGI;
sub ipnVerification() {
  my $secretkey = 'YOUR SECRET KEY';
  my $pop = "";
  foreach $field (sort($q->param))
  {
   unless ($field eq "cverify") {
      $pop .=  $q->param($field) . "|";
    }
  }
  $pop .= $secretkey;
  my $calcedVerify = sha1_hex(encode("utf8", $pop));
  $calcedVerify = uc(substr($calcedVerify,0,8));
  return ($calcedVerify eq $q->param("cverify"));
}
Enjoy!