Here's how it should work as I understand it:
in reply to why ^M are added while iam transfering file using binary in Net::FTP
For ASCII mode, your line endings will be translated if possible. From UNIX to Windows, ^M (carriage return) characters are added. From Windows to UNIX they are removed, I believe. For binary mode, none of that translation is done.
So for true text files, often you really want to use ascii mode. However, for just about anything else, you really want binary. You can really pull you hair out if you transfer a linux executable through a windows box back to linux if you use ASCII in one of the transfers.
Bottom line: Think carefully, and be consistent!
My mission: To boldy split infinitives that have never been split before!