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);
if ($rtncode != 226 && $rtncode != 250)
print "FTP Failed: $msg\n";
#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