I found that it sometimes takes a while for Win32::IE::Mechanize to get a page and process the commands. It seems that $ie->success is not always relyable. What you can do is give a little more time to process your request adding sleep.
#!/usr/bin/perl
use strict;
use Win32::IE::Mechanize;
my $username = '1234';
my $password = '1234';
my $url = "https://secure.10kwizard.com/login.php";
my $ie = Win32::IE::Mechanize->new( visible => 1 );
my $fn = "login";
#my $fn = 2;
$ie->get( $url );
sleep 1; # or more if needed
print $username."-".$password."-".$fn."\n";
print "first time-".$ie->uri."\n";
$ie->submit_form(
form_name => $fn,
fields => {
email => $username,
password => $password,
},
);
sleep 1; # or more if needed
print "second time-".$ie->uri;
exit;