プログラミングのド素人で、独学で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");
No.3ベストアンサー
- 回答日時:
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 を使うのかを決めるのが良いと思います。 それにってその後にすべき事が変ってきます。
ご丁寧な回答、ありがとうございます。
./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に挑戦しようと思います。
今回はありがとうございました。
No.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 が書いてある
・ないとは思うが ##! になっている
などがあります。一度、見直してみては ?
返事が遅くなり、申し訳ございません。
#!/usr/local/bin/perlが、コメント扱いされている場合があるのですね。
最近、他ごとでバタバタしていて、perlの勉強は進んでいなかったのですが、また勉強を再開したいと思います。
本当に、何度も、ありがとうございました!
No.4
- 回答日時:
外れているかもしれませんが、改行コードの問題である可能性があると思います。
試しに、1行目の末尾に半角スペースと - を2つ付けて実行してみてください。
#!/usr/local/bin/perl --
ご回答、ありがとうございました!!
試してみましたが、残念ながら、うまくいきませんでした。
改行コードに問題がある場合もあるんですね。
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- Perl perlプログラミング 空白行削除 4 2023/01/28 17:58
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- Perl perlについての質問 1 2022/10/01 15:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「デバイスは PRN を初期化でき...
-
ActivePerlでWindows上のパスを...
-
例外処理のフローチャートの記...
-
'Range'メソッドは失敗しました
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
-
グラフのX,Y座標を取得したい
-
ユーザー定義関数に#NAME?が返...
-
LCD ディスプレイを Raspberry ...
-
印刷後メッセージボックスを表...
-
pythonのプログラミングについ...
-
Excelで時刻になったら知らせて...
-
偶数/奇数の判定
-
"JScript"が見つかりません!
-
実行中のcpan processを終了さ...
-
Form間の値の渡し方
-
msgboxの表示
-
Excel VBAでリンク切れをチェッ...
-
Perl メールフォーム複数のアド...
-
VBAで別モジュールへの変数の受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「デバイスは PRN を初期化でき...
-
「Perl Command Line InterPret...
-
windows環境でのperlのパス
-
perlの1行目が#!/usr/bin/perl...
-
環境と言語のダブル?クロス開...
-
use strictが効かない (PERL)
-
ApacheがPerlを作動してくれな...
-
@のエスケープ
-
Perl5.8とPerl5.6は共存可能で...
-
#!/usr/local/bin/perlで命令が...
-
Perlの実行パスを自動で変更す...
-
Image::Magickで画像に文字を埋...
-
perl が 実行できない
-
bad interpreter:エラーについて
-
mac perl 5.10 インストール
-
「jcode.pl」というファイルは...
-
#!/usr/bin/perl --でも不安定です
-
activeperlでDBD-Pgを扱うと、p...
-
【超初心者】異なるディレクト...
-
perl初心者です。
おすすめ情報