最近はphpスクリプトばかりでperlスクリプトはほとんど使わなくなったが、今日必要に迫られてperlを使ったらエラーが出た。
Premature end of script headers:

あれ? perlを使ったのがおおよそ5年ぶりなんで、基本を間違えたかな?
エラーログからいろいろ調べていくと原因がわかった。

先頭の
#! /usr/bin/perl
のあとに、見えないけれども改行コード(CRLF)が入っており、CRがパス名にくっついて “/usr/bin/perl\r” などとなってしまっている。

教科書的な対処方法としては、改行コードをDOS(CRLF)からUnix(LF)にして再度アップすればいいのだが、ちょっと面倒だ。
それで、#! /usr/bin/perl のあとにおまじないとして– を入れてみた。とすると、\rが離れるのでエラーがなくなった。

めったに使わないが、次回忘れていると悪いので記録しておこう。

それにしても、いつからこの現象が出るようになったんだろう。定かではないが、ftpクライアントをfilezillaに変えてからだろうか?