電子書籍の厳選無料作品が豊富!

いつもお世話になっています。
Perlを勉強し始めて1か月たっていない人間です。
調べてもよく分からず、気持ち悪いので
どうか教えてください。

Perlで記述するとき1行目にperlへのパスを書きますが
プロバイダでのパスは「#!/usr/local/bin/perl」です。
私のPC環境では「#!d:/perl/bin/perl」になります。

ある日、PC環境で動作検証するとき
間違ってプロバイダのパスのほうを記述してしまいました。
しかし、それでもPC上で動作しました。

なぜパスが違うのに動作するのでしょうか?

なお、わけの分からないまま
「Perlへのパスを通す」というのを昔
やったことがあります。関係がありますか?

ある場合、それをすると
「#!d:/perl/bin/perl」の「d:/perl/」の部分が
「/usr/local/」と同になるということなのでしょうか?

A 回答 (4件)

httpdの種類や設定によっては1行目のパスを無視して動作させることが出来ます。


例えばAnHTTPDは最初からcgiの拡張子とperlを関連付けて使う仕様だった気がします。
Apache1.3(Win)もWindowsのOSでcgi拡張子とPerl.exeの関連付けがしてあれば動作させることが出来ます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
4番さんにまとめさせてください。

お礼日時:2005/09/16 19:23

activeStateでインストールすると


拡張子の割り当てがされて、
Perl cgi.pl
とかしないでも
cgi.pl
とするだけで実行できます。
だから
#!の行は単に無視されて実行されているのではないでしょうか?
#!の行を削除してみて、実行されるようであればそういうことじゃないかと思います。

この回答への補足

みなさん、ありがとうございました。締め切ります。
ポイントは1番早く正解(と思われる回答)を
書いてくださったかたに20pt、
確信に至らせてくださったかたに10ptでご了承ください。
明日決めると、また違う結果になると思います(^-^)。
みなさまに感謝しております。

補足日時:2005/09/17 21:08
    • good
    • 0
この回答へのお礼

みなさん、ご回答ありがとうございました。
まとめさせていただく失礼をお許しください。

なるほど、ほかの設定によっては、このパス記述は
まったく意味がなくなるってことですか。
4番さんのおっしゃるように1行目の記述を
削ってみても問題なく動作しました。

私は質問末尾に書いたように
2つのパスが同じ意味を持つようになるのかなと思い
そこら当たりの理屈はどうなっているんだろうと
悩んでいました。悩むだけばかだったみたいです(^-^)。

1日開けた後に締め切ります。
ありがとうごいざいました。
またどうぞよろしくおねがいいたします。

お礼日時:2005/09/16 19:26

パスを通すと言うのは、もしその言語のプログラムの実行がされたときに


どのディレクトリを見て実行ファイルを探すかということです。
パスを通したパソコン内ではperl(CGI)のプログラムを単に実行しようと
しただけでパソコンが勝手にPerlの場所を見つけて実行しますので、間違った
ディレクトリの指定がされていたけど、パスの方でperlを見つけたのでは
ないでしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
4番さんにまとめさせてください。

お礼日時:2005/09/16 19:24

パスを通してあるのなら、perlと書くだけで、d:/perl/bin/perl


ということになると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
4番さんにまとめさせてください。

お礼日時:2005/09/16 19:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!