• ベストアンサー

頭にperlとつけないと実行できない

a-kumaの回答

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> 実行ユーザーにパスはとおっています。 「実行ユーザにパスが通っている」という意味が分かりません。 スクリプトファイルを、シェルを指定せずに動作させる条件は、以下の三つです。 (1) スクリプトの第一行にシェルを指定する (2) スクリプトファイルに、実行権限がついている (3) スクリプトファイルがある場所に、パスが通っている 具体的には、以下の通り。 > $ perl ファイル名 > > としないとスクリプトが実行できません。 とあるので、カレントディレクトリにあるスクリプトを実行しようとしているのだと 想像します。 (1) は、そのスクリプトファイルの第一行が以下のようになっていることです。 #!/usr/local/bin/perl (Perl の実行モジュールが置かれている場所によって変わる可能性はあります。) (2) は、chmod コマンドを使います。 $ chmod +x スクリプトファイル名 (3) は、env コマンドで確認してみましょう。多分、カレントディレクトリには、 PATH は通っていないはず。 (1) と (2) の条件を満たしているのであれば、 $ ./スクリプトファイル名 と、カレントディレクトリに有ることを明示的に指定して実行してみて下さい。

bunnyLove
質問者

補足

こんにちは。いつもアドバイスありがとうございます。 >「実行ユーザにパスが通っている」という意味が分かりません。 すみません。実行権限があるのと、カレントにパスが通っているのを ごちゃごちゃにしてしまいました。 ひとつずつ確認していくと、 (1)はOKです。 (2)も777の設定になっています。 (3)やっぱりあやしいのはここですよね。 でもenvコマンドで確認しても、ちゃんと PATH=/usr/sbin/:/usr/bin:/usr/local/bin と出てきます。 ちなみに./ファイル名とやると実行できるので、やはりパスの問題ですよね。。 もうちょっと調べてみます・・。(;_;) ありがとうございました。

関連するQ&A

  • cronでのPerlスクリプト実行

    少し前に同様の質問をしましたが、やはり解決していませんでした。 #!/usr/bin/perl open(OUT,">/home/test/test.log"); print OUT "OK"; close(OUT); このスクリプトをcrontabに以下のように記述しました。 0 0 * * * /home/test/test.pl > /dev/null 2>&1 パーミッションは省略します。 このようにすると、正常にtest.logが出力されました。 しかし、本当に実行したいスクリプトを同様にしたところ、 正常に動作しませんでした。cronログには記録されます。 実際のスクリプトは長いのでここには掲載できませんが、 主な処理はおおよそ次のようなことをしています。 ・pmとplモジュールがあり、plからpmを呼び出している。 ・plもpmも自作のユーザ関数の組み合わせ ・ファイルはtestユーザが所有し、実行権限は777。  (動作確認後、徐々に落としていきます) ・plでは、use encoding 'utf8'。 ・スクリプトにオプションを付けて、引数を読み込む。 ・loggerでsyslogへ結果を出力。 ・子プロセスを生成して処理の一端を行わせている。 ・opendir、readdirなどを使用。 ・xxxxxx.datファイルを読み書きしている。 ・CPANにあったメール送受信モジュールを使用している。 ・ファイルをbz2圧縮している。 などです。 コマンドラインから実行すると確実に正常に動作します。 気になるのはPerlスクリプトの内容でモジュールを使うときは、 パスが通っていてもフルパス指定しないといけないのでしょうか? しかし、フルパスと言ってもせいぜいsystem()で実行するコマンドを フルパスにするくらいしか思いつきません。 うまく実行できない理由として考えられる可能性があることを 教えてもらえませんか? 根本的な解決としては、cronでの実行とコマンドラインからの実行は 何が違うのかが明確になれば対処できるのかもしれません。 よろしくお願いします。

  • perl が 実行できない

    perl 初心者です。 apache を起動させ(起動画面は表示)、perl のファイルを IE で表示させようとして、print文を実行しても、print文がそのまま表示されるだけになっています。 perl のパスは、#! d:/perl/bin/perl です。 (コマンドラインから実行すると実行できるので、インストールは正常です。) (XP以前だったと思いますが、そのときは IEで、長文のプログラムが起動できていましたが。)

  • perlでパスが通らない?

    環境はwindowsXPです。 パスがうまく通っていないようです。perl.exeが入っているファイルへのパスは正常に働いているのに、自分で作ったファイルを置いているC:\documents and settings\user\my document\perlというファイルへのパスがうまくはたらきません(Can't open perl script "test.pl": No such file or directoryと表示されます) コマンドプロンプトで「path」を使ってみても上記のフォルダはちゃんとPathに記述されています(;も入っています)。 何がいけないのでしょうか?

  • Perlスクリプトが、ローカルでは実行できるが、HTTP経由では実行できない

    現在Perlスクリプトを作成し サーバにアップしました。 SSHでサーバにログインし #perl a.cgi と実行したところ(CGIとして動作させるため。中身はPerlスクリプト) Content-type: text/html <html> <body> あああああ </body> </html> のようなメッセージが表示され正常に動作しているとおもいます。 しかし、 http://www.hoge.com/a.cgi をURLとしてブラウザ上で実行すると 500 Internal Server Error になります。 パーミッションは755で正常 Perlのパスは#!/usr/bin/perlとしており、これも正常です。 文字コードはeuc-jp 改行コードLF サーバはApache/1.3.33 Perlバージョンは5.8.4 自分のパソコン上でperl+HTTPサーバ(httpd)を使うと HTMLふぁいるとして出力されます。 サーバ上でHTTPを使ってアクセスしたときのみエラーとなります。 このような現象が起こるのですが原因がわかりません。 お願いします。

    • ベストアンサー
    • Perl
  • 5.0でのperl 実行

    Mac OS X 4.0では、スクリプトをmiで開いて、ツールメニューの「実行」 をしていたのですが、os10.56にしたのでmiでの実行が出来なくなってしまいました。 mi以外でperlの実行は出来ないものでしょうか。

    • ベストアンサー
    • Mac
  • PERLスクリプトのコマンドライン実行

    お世話になります。 Perlスクリプトをコマンドライン実行するとき、 perl スクリプト名.pl とすると思いますが、その際、コマンドライン引数を渡してスクリプト内で、その引数を見て処理したいと思うのですが、そういうことできますか?引数の渡し方、受け取り方を教えてください。

    • ベストアンサー
    • Perl
  • Perl から csh 実行

    やまとです。 いつもありがとうございます。 Perl + csh を同時(?)に実行する方法を教えてください。 OSはSunです。 具体的にどのような処理を行いたいか簡単に説明しますと。 1.Perlでcshを実行(system関数?)し、cshで環境変数をセット(source)する。 2.cshで環境変数をセットしたら、ファイルを出力する処理が行われます。 3.Perlでcshによって出力されたファイルの内容を画面に表示します。 以下ソースを掲載します。(抜粋して) ================================================== = Perl ( test_perl.pl ) $data = "ABC"; $ret = system(`test_csh.sh $data`); ・ ・ ファイル(test.log)を開き、読込、画面に表示します(まだ作成してません。) ================================================== = Csh ( test_csh.sh ) source test_source.sh echo $1 > test.log ================================================== = test_source.sh setenv CLASSPATH .:/aaa・・・・・・ ↑ PATHの設定を行ってます。 ================================================== 画面に、「ABC」と出力させたいのです。 Perlからcshが実行されていないように思えるのですが、 Perlのsystem関数の使い方が誤っているのでしょうか? それとも、ClassPath等の設定をしなければならないのでしょうか? ちなみにコマンドから、 # test_csh.sh ABC と実行しますと、ファイルが出力され、かつ、sourceも実行されています。 Perlから実行する方法を教えてください。 説明が不十分であれば、補足いたしますのでご指摘ください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • 2000+IIS5.0でperlからexeを実行したい

    windows2000+IIS5.0で、 perlから、convert.exe を起動したいと思っています。 正確に言うと、 convert.exeはcgiのあるディレクトリScripts/ にあります。 おきます。 convert.exeは、画像のファイル形式を変換するもので、以下のように 使用します。 exec "convert.exe geometry 380x350 aaa.tif ../higaki.gif"; (380x350は画像サイズ、変換元ファイル名 変換後ファイル名) (ひとつ上のディレクトリに変換後画像を置く) これをperlスクリプト内で実行したいのですが、うまくいきません。 DOS窓で、convert.exe geometry 380x350 aaa.tif ../higaki.gif を実行すると、ちゃんと画像を生成してくれます。 perl内で実行するためにはどうしたらよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • VBAでperlのプログラムを使う

    EXCELのVBAでマクロをくみ、perlのプログラムを起動することは可能でしょうか? またperlのプログラム内容が起動パスのところにあるファイル名を取得するプログラムなのですが、 これでEXCELのマクロを実行したパスにあるファイル名を取得することはできるのでしょうか?

    • ベストアンサー
    • Perl
  • Perlスクリプトが実行できない??どうやったら実行できる?

    前にPerlスクリプトを実行する際に、 まず、PCに何かインストールしてから 実行できるようになったのを覚えています。 パソコンを再インストールしたのですが、 何をインストールすれば実行できるように なるか忘れてしまいました。 実行すると ERROR:cmd~~:Cannot start command. (perl.exe ~~.pl 1152 864) と出ています。 どなたか教えてください。 windows2000を使用しています。

    • ベストアンサー
    • Perl