拡張子 .pl と .cgi はどのような違いがあるのですか?

[上に] [前に] [次に]
じぇい 1999/05/22(土) 04:35:17
題名そのままなのですが、、、拡張子 .pl と .cgi はなんか違うんですか?
.txt と .cgi とかが違うのはわかるんですけど、、。

ふじ 1999/05/22(土) 04:45:40
.cgiは、CGIとして起動されるファイルの拡張子で、
中身はPerlでなくても、Cでもシェルでもなんでもいいのです。実行できれば。

.plは、Perlのスクリプト一般につける拡張子です。

B-Cus 1999/05/22(土) 07:10:55
逆に言うと、perlスクリプトをCGIとして実行させたいなら、
*.pl でなく *.cgi としなければいけません。

jcode.pl は CGIとは全く関係ないので、.pl でいいわけです。

ちなみに .pl という拡張子は ただの慣例であって、ほんとは
.hoge でも .fuga でも、拡張子がなくても構いません(少くともUNIXでは)。
# 僕はperlスクリプトに拡張子は付けません。

> .plは、Perlのスクリプト一般につける拡張子です。

Prologも :-)

PTAN [E-Mail] 1999/05/22(土) 09:08:06
> 逆に言うと、perlスクリプトをCGIとして実行させたいなら、
> *.pl でなく *.cgi としなければいけません。

正確に言うと、Webサーバ側の設定がそうなっていれば、が入ります。
要は、Webサーバの設定で「*.plはCGI」と定義すれば、*.plもCGIになります。

じぇい 1999/05/23(日) 17:30:13
>逆に言うと、perlスクリプトをCGIとして実行させたいなら、
>*.pl でなく *.cgi としなければいけません。

うう、、、どうやら僕は基本がわかっていないようです。; ;
CGIとして実行させたい、、、というのは、、どういうことでしょうか?
処理をさせたければ、、ということですか?

じぇい 1999/05/23(日) 17:38:17
あっ、、、もしかして、、CGIというのはHTMLを含んだ処理のことをいうんですかね、、?

B-Cus 1999/05/23(日) 19:02:02
 #!/usr/local/bin/perl
 print "Content-type: text/plain\n\n";
 print "test ok\n";
という内容のファイルを作り、test.cgi と test.pl 両方で保存して、
サーバにFTPでputして、ブラウザでどういう違いがあるか見てみれば
いいでしょう。

こういうのは言葉で聞くだけでなく、自分で試してみるのが一番です。


じぇい 1999/05/23(日) 20:59:59
拡張子 .pl ではサーバーエラーになりました。

、、、いまだよくわからないのですが、、もしかして、、.plでは、こちらに情報を送ってこない、、ということでしょうか?
ただ処理を行うだけで出力をしないとか、、、?

B-Cus 1999/05/23(日) 23:40:01
デフォルトの apache だと、.pl はソースがそのまま表示されるはずです。
 http://www.cs.gunma-u.ac.jp/~j5306050/cgi-bin/test.cgi
 http://www.cs.gunma-u.ac.jp/~j5306050/cgi-bin/test.pl

なぜなら、サーバ側は
 「特定の拡張子(.cgi)が付いているかどうか」
で、
 - ファイルの内容を表示するのか (*.pl)
 - ファイルを実行して、その結果を表示するのか (*.cgi)
ということを判断しているからです。

でも、そうならないということは、そのサーバでは *.pl も
CGIとみなさす、というように設定しているのかもしれません。


じぇい 1999/05/23(日) 23:46:44
あっ、、なるほど。。

拡張子.plは処理を行い、表示するのは拡張子.txtと同じで内容そのままで、拡張子.cgiは処理を行い、その結果を表示するということですね?、、かな。。。

.plはPerlによる処理は行うんですよね?

B-Cus 1999/05/23(日) 23:50:39
いえ、.pl は .txt と全く同じと思ってください。

しかしPTANさんの言われたように、これはあくまでもデフォルト設定なので、
.pl も CGIとして動かすことは不可能ではありません。

> 拡張子 .pl ではサーバーエラーになりました。
しかし .cgi は動いて .pl はサーバーエラーという挙動はちょっと
理解できません。タイプミスなどしてませんか?

じぇい 1999/05/24(月) 00:06:51
>.pl は .txt と全く同じと思ってください。
わかりました。一般には.plはなんの処理も行わないのですね。
しかし、、jcode.plはjcode.txtでは、、だめですよね、、?
.plというのはCGIスクリプトの中でなんか命令をしたらPerlで処理を行うようになるのでしょうか?(ずっととぼけたことばかりお聞きしてすいません)。今まで、感覚でスクリプトを作っていたので、なんか理屈を理解するのが大変です^^;。やっぱもっと机にかじりついて基本をマスターしないとだめですね。。

>しかし .cgi は動いて .pl はサーバーエラーという挙動はちょっと
>理解できません。タイプミスなどしてませんか?

どうやらタイプミスをしていたようです。^^;
申し訳ありません。
実行した結果はどちらも同じになりました。
どうやら僕の利用しているサーバーでは.plと.cgiはどちらもCGIとして実行するようです。


B-Cus 1999/05/24(月) 03:37:31
> 一般には.plはなんの処理も行わないのですね。
デフォルトの apache の設定では、CGIとして動作しないようになっています。

> jcode.plはjcode.txtでは、、だめですよね、、?
別に構いません。呼び出す方も
 require './jcode.txt';
などと書いておけばできます。

なぜなら、
> ちなみに .pl という拡張子は ただの慣例であって、ほんとは
> .hoge でも .fuga でも、拡張子がなくても構いません(少くともUNIXでは)。
だからです。

じぇい 1999/05/24(月) 03:51:27
[[解決]]
ご親切にどうもありがとうございました。
なんか、、B-Cusさんには毎回お世話になっているような気がします。
こんな素人に付き合っていただいてありがたいです。

そのうちもっと高度でおもしろい質問ができるようにしますので…。

[上に] [前に] [次に]