Put is part of Net::FTP. Got any code or actual error message(s). Did you run it with the Debug=>1 option?
Update: Just taking a wild guess here, but the 'put' command from your ftp client script maybe failing because it's running in *passive* mode, as Net::FTP seems to by default. The server probably doesn't want *passive* connections, and is only accepting *active*.
As an example to specify passive or not in your script (and use the debug option):
use Net::FTP;
$ftp = Net::FTP->new('your.ftp.server', Debug => 1, Passive=>0)
or die "Cannot connect to your.ftp.server: $@";
$ftp->login("user",'passwd')
or die "Cannot login ", $ftp->message;
$ftp->cwd('a.remote.directory')
or die "Cannot change working directory ", $ftp->message;
$ftp->put('./my.local.file.in.the.lcwd')
or die "put failed ", $ftp->message;
$ftp->quit;