in reply to Battling form spam

In what way does it fail to work?

Please reduce one of your scripts to a small, self-contained script that exhibits the problem.

How do you fill %Form?

I would double check that the name of the hidden field ("hiddenfield") is actually the same between the HTML page submitting to the script and the script.

Assuming a standard CGI setup, the following could work, if your scripts use CGI.pm (and if they don't, you should start rewriting them to use CGI).

#!perl -w use strict; use CGI; my $q = CGI->new(); print $q->header(); if ($q->param('hiddenfield') eq '') { print "<h1>Hidden field was not set</h1>"; } else { print "<h1>Hidden field was sent</h1>"; };