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