• ベストアンサー

超初心者です

最近Perlの勉強を本をつかって始めたのですが、 最初の段階でつまずいています。 プログラムは #!/usr/bin/perl #プログラム:hello.pl print "Hello, world!\n"; という本当に実に単純なものなのですが、これをターミナルで実行しようとすると $ hello.pl bash: hello.pl: command not found と表示されてしまします。 $ perl hello.pl Hello, world! ではちゃんと動いています。 Perlの場所は $ find /usr -name perl /usr/bin/perl /usr/doc/db3-devel-3.2.9/ref/perl により間違っていないと思いますし、 chmod 755 hello.pl も行っています。 なにぶん初心者ですので何が他に理由でエラーになるのかわかりません。もしよろしければ、アドバイスをいただけるとうれしいです。 自分はVineLinux2.6を使っていてPerlのバージョンは5.006001です。

  • Perl
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • uninin
  • ベストアンサー率20% (26/129)
回答No.3

まず、rootになる必要はありません。 bashでしたら、PATH=$PATH:/hoge/huga したあとに、 % export PATH してください。まとめて、 % export PATH=$PATH:/hoge/huga でも構いません。printenvできちんと設定されてるか確認するのが良いと思います。

naokanak
質問者

お礼

なんとか"./"なしでもプログラムを実行することに成功しました。本当にありがとうございます。 しかし、大きな問題が最後に残りました。 printenv PATHで確認をするとこうなりました $ printenv PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/naokanak/parl/bin:/home/naokanak/parl/bin:/home/naokanak/parl/bin:/home/naokanak/parl/bin:/home/naokanak/parl/bin 何回"perl"を"parl"と間違えているんでしょう…○| ̄|_ そして、このPATHの消し方がわかりません。 そしてPATHの追加もできません。 このままだとフォルダ名を"parl"としていないと動かないみたいです。 なんとか直す方法はないでしょうか? 自分のバカさ加減にちょっと笑ってしまいます。本当にすみません。

その他の回答 (3)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

>このままだとフォルダ名を"parl"としていないと動かない>みたいです。 >なんとか直す方法はないでしょうか? .bashrcを正しく修正してください。(parl->perl) その後、ログアウトしてください。 再度ログインすると、正しくパスが修正されています。

naokanak
質問者

お礼

全て解決しました。本当にありがとうございました。

  • uninin
  • ベストアンサー率20% (26/129)
回答No.2

自分で把握している限りは、どこにpath通しても構わないでしょうね。 カレントディレクトリはころころ変わりますので、実行者が常にpathを 把握できないという点で危険です。

naokanak
質問者

お礼

たびたびありがとうございます。 アドバイス通りPATHを通そうと思ってnaokanakというユーザーの下にperlフォルダを作ってさらにbinというフォルダを作ってそこにプログラムを置いて".bashrc"に Path=$PATH:/home/naokanak/perl/bin という一文を加えました。 さらにrootになって #source .bashrc を実行して一般ユーザに戻ってもう一度実行すると $hello.pl bash: hello.pl: command not found という結果になりました。 これはPATHの設定が間違っているのでしょうか?それとも根本的にやりかたが違うのでしょうか? まともにPATHの設定もできなくてすみません。 助けていただけるとありがたいです。

  • uninin
  • ベストアンサー率20% (26/129)
回答No.1

pathが通ってる所にhello.plを置いてないからでは。 カレントディレクトリにあるのならば、 % ./hello.pl で実行できると思います。 "." にpathを通すことも出来ますが、安全を考えたらやめた方が無難です。

naokanak
質問者

お礼

アドバイスありがとうございます。 たしかに./hello.plで実行することができました。 さらにここで質問なのですが、"."にパスを通すのは確かに安全ではないのでやめようと思うのですが、ではいちいちrootになるのも面倒なので一般ユーザの下のどこかにPerl用のフォルダを作ってそこにパスを通すというのはどうなんでしょうか? それはやはり安全面からはよくないことなんでしょうか? 自分のパソコンの中でhtmlにCGIを組み合わせて実行する練習をしたいと思っているのでなんとか"./"を付けないで実行したいと考えています。 よろしくおねがいします。

関連するQ&A

  • Perlの超初心者です。

    Perlの超初心者です。 mac osXを使っています。テキストエディットで、#! /usr/bin/perl print "hello world!\n";と書いてperl-test.plと保存しました。そしてターミナルを起動してperl-test.plとタイプしたのですが、-bash: perl-test.pl: No such file or directoryとなってしまいます。 試しにターミナルでperl -le "print 'hello world';"とタイプするとhello worldとかえってきました。 perl-test.plはfinderのデスクトップに保存してあります。いったいどうすればperl-test.plのファイルを実行できるのですか? 教えて下さい。よろしくお願いします。

  • perlの起動法

    perl起動法について質問なのですが、 perlでファイルを作り、一番上に#!/usr/bin/perlと書いて、perl.plという名前で保存しました。 ターミナルで$chmod 755 perl.pl $./perl.pl とコマンドをうったのですが、print文で書いたhello worldというが表示されません。 でもperl perl.plとコマンドを打つと実行されます。 一体この違いはなんなのでしょうか?学校の課題で、どうしても./perl.plとして実行させなければならないので是非解答お願いします。

    • ベストアンサー
    • Perl
  • rubyのファイルを実行できません。

     Debian(Woody)の環境です。 #find ./ -name ruby ./usr/bin/ruby ./usr/share/doc/ruby ./usr/doc/ruby ./usr/lib/ruby があり、/usr/binにrubyのファイルが確認できます。 $ruby -v ruby 1.6.7 (2002-03-19) [i386-linux] が出ます。pathが通っています。 $ ruby -e 'print "hello World\n"' で hello World もちゃんどでます。 しかし、vi hello.rbで、中には ------------------- #!/usr/bin/ruby print "Hello World!\n" --------------------- と、実行権-rwxr-xr-xにします。 %hello.rb では: bash: hello.rb: command not found が出て,実行できませんでした。 ファイルの中に、#!/usr/lib/rubyに代えてもおなじでした。  因みに %env で ... PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11 ... がでます。  アドバイスをよろしくお願いします。

    • 締切済み
    • CGI
  • Cygwin上でperlスクリプトの実行

    Cygwin上で、例えば「hello.pl」というperlスクリプトを 実行するのに $ perl hello.pl や $ ./hello.pl では実行できるのに $ hello.pl だと bash: hello.pl: command not found と なってしまって実行できません。 $ hello.pl でコマンド化して実行したいのですが どのようにすればよいか教えてください。

  • シェルスクリプトの1行目に#!を書いてもダメなのはなぜ?

    test.shというシェルスクリプトを #!/bin/bash echo "bash test" のように書き、chmod +x test.shを実行し、 test.shと入力すると、bash testが表示されるはずですが、 エラーbash: test.sh :command not found が出ます。which bashでパスを見ると /bin/bashなので、問題ないはずなんですが。 ちなみに、bash test.shと入力すると、正常に実行されます。 同様のことがperlスクリプト #!/usr/bin/perl print "perl test\n"; についても起こります。 何か設定がまずいのでしょうか? RedHatLinux7.2を使用しています。

  • PATHいついて

    ShellScriptの中で Perlを呼び出して動かそうとしています。 Command not foundと返ってきてしまいます。 ShellScriptの先頭には、 #! /bin/bash が入っています。 また、$PATHを見てみると、 bash: /usr/local/bin:/usr/bin:/bin:..... となっています。 後、何をチェックして、正せば良いのでしょうか? よろしくお願い致します。

  • bad interpreter:エラーについて

    -bash: ./test.pl: usr/bin/perl: bad interpreter: というエラーについてです。 掲題のエラーが出てしまい、perlが動かないので困っています。 どうすればいいのか教えてもらえませんでしょうか。 【状況】 VMwareplayer3.1.2上で、CentOS5.5を動かし、デフォルトで入っているperlを使ったファイル「test.pl」を作っています。 test.plを実行しようとしているのですが、以下のエラーメッセージが表示されます。 -bash: ./test.pl: usr/bin/perl: bad interpreter: そのようなファイルやディレクトリはありません 実行した際のコマンドは./test.plです。 test.plの中身は以下。 ------------------------------------------------------ #!/usr/bin/perl use strict; use warnings; my $name = "morifuji"; print "Hello ". $name . "\n"; ------------------------------------------------------ 【確認済み事項】  test.plの置き場所は/usr/bin/perlです。  ls -lで権限をみたところ、rwxr-xr-x furukawa root 4096となっている。  perl test.plと命令するとエラーは返らずちゃんと表示されます。  (perlを省いて、test.plと命令するとエラーになる。これだと、webから表示されたときに動きません)  FTPとかで転送すると文字コードの問題でバグが出る、という風な記事を見かけたが、VMwarePlayerなのでそういったやりかたはしていない。  which perlと命令してperlの場所を探したが、 /usr/bin/ にある。

  • ブラウザ表示できません

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”http://localhost/cgi-bin/hello.pl” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします。

    • ベストアンサー
    • Perl
  • ブラウザが表示されません

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”​http://localhost/cgi-bin/hello.pl​” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします

  • ブラウザが表示されません!!!!!!

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”​http://localhost/cgi-bin/hello.pl​” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします。

専門家に質問してみよう