質問: Mac OS XでPerlの(というか初めてのプログラミングの)勉強を始めました。 スクリプトファイルを作るのには、miというテキストエディタを使っていますが、なぜか実行できるものとできないものがあります。実行できないものは、ターミナルで文法チェックにかけています。 ``` % perl -cw broken.pl % broken.pl syntax OK ``` 「ハローワールド」と表示するだけの単純なスクリプトなのですが、なにも起こらず次の行ができます。 ``` % perl broken.pl % [] <-これはカーソル ``` 覚えていないだけで実行できるファイルと違った作り方をしているのだと思いますが、Perlのスクリプトファイルを作るときに気をつけるべき点を教えてください。 最終的には、別のテキストファイルを変更することを目指して勉強しているのですが、操作対象のファイルでも形式上の制約があるのでしょうか? 編集 コメントにお応えしてcatの結果を引用します。 ``` bash-3.2$ cat broken.pl print "$embedded 表示されたら合格。\n"; ``` エディタで入力したスクリプト(以下の画像)の一部に過ぎません。 ![入力したスクリプト](https://i.stack.imgur.com/0M9Ry.png) そこで確実に全部の内容を見るためにcatにつづけて | lessを使いました。一部文字化けではないかとおもわれるところがあるので画像で示します。 ![入力したスクリプトの全景](https://i.stack.imgur.com/3v0u3.png) Perlのバージョンは ``` bash-3.2$ perl -v |grep This This is perl, v5.10.0 built for darwin-thread-multi-2level ``` です。初めに調べるべきでした。多分古すぎるのでしょうか。
回答: (mztnsさんの回答と同じですが補足として一応) スクリプトに含まれている文字`^M`からおそらく、Perlから見ると改行を正しく判断できずに一行だけのファイルだと解釈してしまい、さらに先頭に `#!/usr/bin/perl` があることでスクリプト本体がコメント行扱いされて、結果的に何も出力されなかったようです。 miエディタの改行コードが`CR(Mac)`になっていることが原因かと思います。 エディタのモード設定→デフォルトから「改行コード」を`LF(UNIX)`に設定したのち、 改めてスクリプトを編集・実行してみてください。