To do proper error checking after each put. I think you should check the return code explicitly and then return the error message from ftp. Here is how I would do it.
$ftp = Net::FTP->new("mysys",Port => 9021,Timeout => 20, Debug => 0);
$ftp->login("anonymous",'me@myself.com');
$ftp->put("$dir/$file1");
my $rtncode=$ftp->code;
if ($rtncode != 226 && $rtncode != 250)
{
my $msg=$ftp->message;
print "FTP Failed: $msg\n";
$ftp->quit;
}
#do remainder of your puts here.
The '226' and the '250' are both return codes used in FTP. You can read more about them in the RFC for ftp.
update: to fix link