in reply to I'm sure I'm missing some little thing...

If you're not doing it already, you should definately use strict. A 404 error (file not found) means that your redirect is wrong. Throw either

print "Content-type: text/html\n\n"; # or print $cgi->header();

in front of

print "Location: $url/poll.cgi?action=login\n\n";

and see what's wrong with it (probably $url is somehow off.)

Since you're already using CGI, why not let it make the the redirect?

print $cgi->redirect( -uri => 'whatever' );