Perlでbad interpreter

#!/usr/bin/perl

while (<STDIN>){
  $content .= $_;
}

open(DATAFILE, ">> /tmp/data.txt") or die("error :$!");
print DATAFILE $content;

標準入力をテキストファイルに保存するだけの処理を実行したところ、

/usr/bin/perl^M: bad interpreter: No such file or directory sh:

と言われてしまった時の対処法。

結論は、ソースファイルの改行コード。

「^M」となっているので、改行コードがCRLFになっていると想像できる。

というわけで、文字コードをLFに変換。

# vim sample.pl

:set ff=unix
:wq

すると、無事実行できた。