こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

#!/usr/local/bin/perlで命令が出せません。

プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。
どなたか、アドバイスをいただけないでしょうか?
ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。
ちなみに、私が書いたプログラムは、以下のようなものです。
#!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl)
# hello -- 挨拶のプログラム
print ("hello");

投稿日時 - 2008-12-07 01:07:32

QNo.4535682

すぐに回答ほしいです

質問者が選んだベストアンサー

perl.exe が、あなたの書いたスクリプトを見付けられないんじゃ無いでしょうか。

あなたの書いたスクリプトが hello.pl だとすると、

./hello.pl

とかで起動できないいんですね? 以下の Windows風の絶対パスでの起動を試してみてください。

'c:\foo\bar\hello.pl'


type perl の結果でスクリプトの 1行目 を決めるのは、大方は正しいでです。 正しくないのは、ふたつ以上のPerl処理系がインストールされた環境で使い分けるべき場合ですね。

type の結果が 「/cygdrive/c/Perl/bin/perl」というのは 「c:\Perl\bin\perl」であって、Cygwin の Perlでは無いのでしょう。それが Cygwin のShell(bash等) と相性の悪いのはしょうがない事です。

まずは、c:\Perl\bin\perl を使うのか Cygwin のPerl を使うのかを決めるのが良いと思います。 それにってその後にすべき事が変ってきます。

投稿日時 - 2008-12-08 11:10:10

お礼

ご丁寧な回答、ありがとうございます。

./hello.pl、'c\foo\bar\hello.pl'の両方を試してみたのですが、残念ながら、うまくいきませんでした。

zxcv0000さんの回答を見てはじめて知ったのですが、cygwinにもperlが入っているのですね。
私は、cygwinを通して、別にinstallしたactive perlで処理している気でいました。

>まずは、c:\Perl\bin\perl を使うのか Cygwin のPerl を使うのかを決めるのが良いと思います。 それにってその後にすべき事が変ってきます。

そのようにしようと思います。結論として、c:\Perl\bin\perlを、コマンドプロンプトを用いて、使おうと思います。
cygwinを使おうと思ったのは、「#!」が使えたほうがよいと感じたからだったのですが、どうも今の私には、手に余るようなので、また力をつけてから、cygwinに挑戦しようと思います。

今回はありがとうございました。

投稿日時 - 2008-12-09 01:11:43

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

今回も外れているかもしれませんが、#!/usr/local/bin/perl がコメント扱いされている
可能性があると思います。

コマンド行の hello.pl や1行目の /usr/local/bin/perl が見つからなかった場合は、
通常「No such file or directory」のエラーメッセージが出ます。一方、#!/usr/local/bin/perl
がコメント扱いされた場合は、次の行の print は Perl の print ではなく、通常のコマ
ンドとしてパス上を探します。見つからなかった場合に、「command not found」のエラ
ーメッセージが出ます。(以上は Linux の場合で、Cygwin の場合は違うのかもしれません。
その場合は、スミマセン。)

#!/use/local/bin/perl がコメントとして扱われるケースとしては、
・1行目の先頭に空白がある
・1行目が空行で、2行目に #!/usr/local/bin/perl が書いてある
・ないとは思うが ##! になっている
などがあります。一度、見直してみては ?

投稿日時 - 2008-12-10 09:12:50

お礼

返事が遅くなり、申し訳ございません。

#!/usr/local/bin/perlが、コメント扱いされている場合があるのですね。

最近、他ごとでバタバタしていて、perlの勉強は進んでいなかったのですが、また勉強を再開したいと思います。

本当に、何度も、ありがとうございました!

投稿日時 - 2009-01-06 00:20:50

ANo.4

外れているかもしれませんが、改行コードの問題である可能性があると思います。
試しに、1行目の末尾に半角スペースと - を2つ付けて実行してみてください。

#!/usr/local/bin/perl --

投稿日時 - 2008-12-08 15:15:41

お礼

ご回答、ありがとうございました!!

試してみましたが、残念ながら、うまくいきませんでした。
改行コードに問題がある場合もあるんですね。

勉強になりました。

投稿日時 - 2008-12-09 01:13:33

ANo.2

まず実行権限が付いているかどうか.
あとは, そのスクリプトのあるディレクトリが PATH に入っているかどうかを確認.

投稿日時 - 2008-12-07 01:33:08

お礼

実行権限とか、PATHとかが、まだ理解できていませんが、それらを勉強してみます。

ありがとうございました!

投稿日時 - 2008-12-08 02:59:44

ANo.1

恐らく、実行権限がないのだと思います。

chmod a+x [ファイル名]

としてから、実行してみて下さい。

投稿日時 - 2008-12-07 01:28:40

お礼

実行権限の問題の可能性が高いのですね。
chmod a+x[ファイル名]でも、うまくいきませんでしたが、実行権限に問題であるようなので、その部分について、勉強してみようと思います。どうも、ありがとうございました。

投稿日時 - 2008-12-08 02:58:34

あなたにオススメの質問