
掲示板ソースをダウンロードするとplやpmという拡張子のものがありました。中身はPerlでした。
拡張子の使い分けを教えてください。
適当に4つのルールを書いてみましたので、間違っていたり、追加するルールがありましたから教えてください。
1 ブラウザがそれ自身にアクセスし、ブラウザのアドレスバーに表示させるならcgiにするべき。
2 Perlのpackageの機能を使うなら、パッケージファイルはplかpmでなくてはならない。
3 Perlのrequireの機能を使うなら、その外部ファイルはplでなくてはいけない。
4 Perlのuseの機能を使うなら、その外部ファイルはpmでなくてはならない。
No.2ベストアンサー
- 回答日時:
基本的に拡張子は、あっても無くてもなんでもOKです。
ただ、モジュールには.pmをつけなければなりません。また、webサーバによってCGIとして使える拡張子に制限がある場合があります。
1.について
言語として、特に拡張子を.cgiにしなければならないというのはありません。.plでも.doでも.hoge
でも基本的には大丈夫ですが、大抵運用するwebサーバによって使える拡張子が制限されています。.cgiしかダメなサーバとか。
2.について
そのような制限はありません。拡張子は何でもOKです。
ただ、前述の通りwebサーバによって拡張子の制限がかかっている場合はCGIとしては実行できません。
3.について
そのような制限はありません。拡張子は何でもOKです。
4.について
その通りです。use関数の対象になる外部ファイルは.pmでなければなりません。
この回答への補足
サーバの方は自分で設定しているので、もしかしたら.cgi以外を.cgiのようにさせることができるかもしれないということは分かるんですが、人が作ったPerlには.plや.pmがあるので、なぜ.cgiにしなかったのか知りたいです。
.pmはuseの対象にするなら必須条件だということをここで教わりましたが、.plはどういう場合に使われるものなんですか?
予想としてはHTMLソースを出力しないものを.plにしているように見えました。
No.3
- 回答日時:
もともと便宜上Perlのスクリプトファイルは拡張子に".pl"がつけられてきました。
Webサーバからプログラムを実行する仕組みとしてCGIが誕生したとき、CGIとして動くプログラムファイルには".cgi"という拡張子をつけるというお約束ができたみたいです。
これは、Webサーバが何でもかんでもプログラムを実行させないように出来た決まりですね。
これは単なる慣例であり、必ず従わなければいけない決まりではありません。
CGIは、どんなプログラムファイル(C言語で作られたものでもシェルスクリプトでもawkでもsedでも)でもCGIとしての仕様を守ればCGIとして動作します。なので、拡張子が.cgiだからといってPerlで書かれたファイルとは限りません。
そのあたりの区別をしたい方は拡張子を.plとしたりするでしょう(私も.cgiは使わず、.plを使います)。
HTMLソースを出力しないものを.plにしている、というのも、ソースを書いた作者次第?だと思います。
No.1
- 回答日時:
4はあってますが、1から3までは必須ではないです。
1) サーバの設定次第ですので、cgiにしたからといって正しく動くとは限りません。
2) package機能は名前空間の制御に利用するものなので、別ファイルにするかは関係ないです。
3) requireは任意のファイル名を指定できます。ただしファイル名でなく、引用符で囲ってない単語(bare word)を指定した場合、挙動が変わります。
詳しくは、ドキュメントperlfuncのrequireとuseのところ、ドキュメントperlmodをご覧ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Chrome(クローム) Chromeでダウンロードしたファイルを拡張子ごとに取り扱い方法を変更できないんでしょうか? 2 2022/11/19 17:34
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- その他(ブラウザ) おすすめのブラウザ 教えてほしい 5 2023/06/06 11:00
- ノートパソコン ソフトアンインストール残存ファイル 3 2022/09/13 18:15
- その他(ブラウザ) Twitterの「返信をさらに表示」 ボタンの後ろに隠れているツイートを常に表示 1 2023/08/04 12:20
- Chrome(クローム) スマホはauのアンドロイドです。 GoogleChromeの拡張機能としてKeepaを使いたいです。 2 2023/04/08 20:08
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
自CGIのURLのパス部分を取得す...
-
htmlファイルへのcgiの組み込み...
-
cgiとplとpm
-
CGIの中にinclude
-
「動的ページが表示されない」...
-
Quantifier follows nothing in...
-
jcode.plが読み込めない
-
KENT WEBのWebpatio(http://ww...
-
エクセルで毎月第2週日の水曜日...
-
エクセルで相対パスの書き方を...
-
週2回のペースって だいたい何...
-
[Excel] ある日の曜日が当月の"...
-
c言語の質問です。 ある月のカ...
-
エクセル、条件付書式について...
-
raspberrypiから外部サーバーへ...
-
ヘッダのinclude順
-
An HTTPdでPerlを動かす
-
月の第一週とは
-
土曜日の26時って何曜日の何時...
-
グローバルIPアドレスの取得。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
jcode.plが読み込めない
-
xamppでcgiが動かない
-
perlのrequireの動き方について...
-
Locationでターゲット指定はで...
-
htmlからテキストを返すperlを...
-
Perlで属性を変更したい
-
Perlでuse strictと %inの共存
-
コマンドラインでGET or POSTで...
-
require文が実行できない
-
ファイル書込時にPermission de...
-
requireでreturnを使いたいので...
-
Perlで書いたページが表示されない
-
携帯用のページに perl で post
-
Perlのデバッグ方法って。。。...
-
cgiからcgiをコールする。
-
Internal Server Error
-
フォームでインクリメント入力→...
-
KENT WEBのWebpatio(http://ww...
-
pushボタンを押した後、画面を...
おすすめ情報