コンピュータは文字をすべて文字コードという数値で処理しますが、改行を表すのに用いられるコードが改行コードです。改行コードはOSによって次のように異なります。
OS コード表記 16進表記 10進表記 UNIX <LF> 0A 10 Windows <CR><LF> 0D 0A 13 10 Macintosh <CR> 0D 13 HTMLファイルであれば、どの改行コードであってもブラウザが適切に処理してくれるのですが、CGIスクリプトはOSに適した改行コードでないと、エラーになってしまいます。例えば、Windowsで作成したCGIスクリプトをUNIXのサーバーに転送する際は、改行コードを <CR><LF> から <LF> に変換してやらなくてはなりません。
FTPソフトでサーバーにCGIスクリプトを転送する際に、転送モードを [テキストモード] や、[ASCIIモード] に設定しておくと、転送時に、自動的に適切な改行コードに変換してくれます。ただし、古いバージョンの Fetch など、日本語に対応していないFTPソフトの場合は、[テキストモード] にすると日本語が化けてしまったりします。Fetch の場合は [Transrate ISO Charactors]というチェックをオンにすることで回避できますが、回避できない場合は、次の方法で転送してください。
最近のテキストエディタには、保存時に漢字コードや改行コードを直接指定できるものがあります。FTPソフトに変換してもらう方法がうまくいかない場合は、あらかじめテキストエディタで改行コードを相手のOSにあわせて保存し、その後、FTPソフトの[バイナリモード(Rawモード)]で転送するようにしてください。