The error i believe occurs at the place prior to attempting the "put" command. Even the turning off the Passive mode (by removing $ftp-> pasv() from the code) doesn't work and result is same. The file that was supposed to be transferred is created at the destination while executing this code but with ZERO bytes and no data is transferred. I even tried to connect the remote machine manually (instead of CGI code), i am able to login, but the file is not getting transfered.
But strange to me that while using a software (Filezilla) i am able to FTP the files easily.