プロが教える店舗&オフィスのセキュリティ対策術

ネットワークプログラミングのPerl開発環境構築でわからない点があります。コマンドラインからは実行できたのですが、ブラウザのURLにHttp://…/スクリプトファイル.pl を書き込んで実行できると参考書にはあるのですが、サーバーではないマシンにはlocalhostは存在しないので、そんな無茶な!という状況にあります。どなたか助け船をお願いします。

A 回答 (14件中1~10件)

もう少し易しく解説した方が良かったでしょうか?



ブラウザとPerlの組み合わせで開発を考えている時点でHTTPサーバ抜きに考えることはできません。
HTTPサーバが無い=CGIが使えない=ブラウザではプログラムが動かせない
ということです。

> Http://…/スクリプトファイル.pl を書き込んで実行できると参考書にはあるのですが
そこにはHTTPサーバと「.pl」ファイルをCGIとして理解できる設定が必要という前提条件が書かれていませんか?
いくらなんでもそのまま実行はできませんし、ローカルなファイルはhttp://からじゃなくてC:\などファイルを示す別の文字列からはじまりますよ。
http://云々というのはHTTPサーバがあるという前提条件ということではないでしょうか。
本当に大事な部分をすっ飛ばしてそんなことを書いてある参考書があるとすれば、なにかたちの悪い冗談ではないかと思います(ちょっと面白そうなのでできれば教えてください)。

> クライアント側でサーバーとの通信を制御するPerlスクリプト・ファイルとその画面上のインターフェースをHTMLで作ればできるはずですよね
ブラウザがHTMLからローカルのアプリを自由に動かせる仕組みってやばいでしょ
HTMLからFORMATコマンド起動してハードディスクをきれいさっぱり無くさせるなんてことができたら・・・。
そういうブラウザ自体作って作れないことは無いでしょうけど存在はしていないかと思います。
まぁWindowsOSでIE限定なら、VBScript+ActiveXからWindowsアプリを条件付で動作させることは可能でしょうけどHTMLじゃ無理です。

> Web上の特定のデータベースサーバーと会話的な通信を行うためのperlスクリプトファイルを作るには
WebサーバとDBサーバは別物です。
HTTP上のということはWeb(HTTP)サーバを介すという点でご質問の趣旨から外れてしまうでしょう。
HTTPサーバを介さないでDBサーバと直接通信を行い尚且つブラウザでコントロールしたいならWindowsであればODBC(JDBC)ドライバとJava(Applet)を駆使する以外に無いでしょう。
HTTPサーバを介すなら、そのHTTPサーバに直接CGIをアップして実行させればクライアント側にHTTPサーバをたてなくて済むでしょう。
さらに、実はHTTPサーバの結果のテキストデータにのみ用があってということなら・・・やっぱりPerlだけじゃ・・・
あとは、スケジュールタスクとかでPerlを動かせて取得した結果をHTMLで整形してローカルのファイルに吐き出して、それをブラウザで見るようにするとか位でしょうか。

長々とすいませんでした。

この回答への補足

「参考書」は「Perlテクニックブック」ミューテック著C&R出版です。「URLにcgiファイル名を指定して実行できる」という記述はその37ページにあります。この本の前書きに動作確認確認環境は Linux 9, Perl5, データベースPostgreSQL7とあります。 私のOS環境はWindowsNTです。

補足日時:2009/09/23 01:25
    • good
    • 0
この回答へのお礼

詳しいく、説明していただき、勉強の方向を掴めました。
ネットワーク・プログラミングの勉強の前にPerlの基礎的な知識が不足していることがわかってきました。
初心者の愚問に親切にご回答くださり、ありがとうございました。

お礼日時:2009/09/26 02:40

> 「クライアントはサーバの機能もなければならない」という不可解な前提を「動作試験段階では」ということで理解


この文面だけだと誤解をされているように思えるのですが
問題点は
 ブラウザをプラットフォームとしてプログラムを実行させることが「サーバを必要」
とさせているのです。
ブラウザにはそんな機能が無いので、HTTPサーバ側でCGIというインターフェースでもってそれを補っているのです。
基本的にブラウザはその名の通りブラウズの機能しかないのです。
動作試験だろうが本番稼動だろうが、質問者様の機能を前提にすると、CGIを実装するHTTPサーバアプリがそこに必要となります。

前回答者さんのおっしゃるようにクライアント・サーバというのはサービス形態上での立場を表す便宜上での言葉でしか有りません。
インターネットでは接続されているすべての端末を一律「HOST」といいます。決してサーバとかクライアントという言い方はしません。
数あるインターネットのサービス、例えばWebサービスという狭義の範囲において、閲覧するHOSTを便宜上クライアントと呼び、コンテンツを提供するHOSTをHTTP(Web)のサーバと呼ぶのです。

もうご存知かもしれませんが、GoogleがGearsというブラウザ用プラグインで、オフライン状態のローカルSQLiteをまわせるモノを提供してます。
詳細は使ったことが無いのでよくわかりませんが何かの参考になるかも・・・。
    • good
    • 0
この回答へのお礼

わかり易いご回答に感謝申し上げます。沢山の方々がわざわざ回答の時間を割いてくださって驚いています。Google Gearsを覗いてみました。浅い理解しかできていませんが、近未来の汎用パソコン・ソフトの原型がこれなのでしょうね。

お礼日時:2009/10/03 19:58

解決された様ですが、ちょっと参考情報を。



サーバーとかクライアントとか言うのは、本当はコンピュータの種類ではありません。

http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%A9% …

何らかのサービスを要求するのがクライアントです。

クライアントの要求に答える形で、そのサービスを提供するのがサーバーです。

つまり、サーバーとかクライアントとかはソフトウェアの種類なのです。


例えば InternetExplorer はWebクライアントソフトウェアです。 ユーザーの操作に従い、HTTPプロトコルで要求を送出します。 送出の宛先は Webサーバーソフトウェアです。

Webサーバーソフトウェアには Apache とか IIS とかがあって、クライアントの要求に応えてファイル内容等を返送します。

WebサーバーソフトウェアはWebクライアントソフトウェアと違うコンピュータで動いている事が多いのですが、開発環境等では同じである事も珍しくありません。 要求を受けてサービスを提供するコンピュータにはサーバーソフトウェアが必要なのですから。


「サーバー」という用語をコンピュータの種類と考えた方が便利な局面はあるかも知れませんが、今回の話題には違和感の元でしょうね。

余計なお世話だったら、すみません。
    • good
    • 0
この回答へのお礼

「余計な」などとはとんでもない。わかり易いご回答をありがとうございました。
 「何をしたいのかわからない質問」をしてしまったわけですが、動機は、ある公的機関のデータベース利用を申請し、許可されたのですが、そのデータベースとの通信インターフェースを自分用に便利に構築したいと考えた次第です。ホームページ用CGIを作れる程度の知識ではPerlのごく初歩しか理解していないことが、わかってきました。

お礼日時:2009/10/03 19:43

やりたい事は、以下で合ってますか?



要求1 自作のPerlスクリプトを、手元のマシンの CPU で実行させる。

要求2 その起動は、Webブラウザで http://○○/△△/××.pl を開く。

その為には、手元のマシンでWebサーバーを動かす事が必須です。 それが目的で無くとも、手段として必要という事です。

Webサーバーを動かせないなら、要求のいずれかを諦めないと無理かと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
おかげさまで「クライアントはサーバの機能もなければならない」という不可解な前提を「動作試験段階では」ということで理解できました。

お礼日時:2009/09/26 02:24

 書評を見る限りではそんなに悪い本ではなさそうですが、Perlの文字列処理など機能面にスポットを当てすぎて動作環境についての記述が必要最小限になっていると見ました。

 前の方が回答してくださっているように、書籍内容の話が前後していて前提条件を見落としている可能性が高いです。
 ブラウザはOSではないので通常のブラウザ内部でWindowsのアプリケーションソフトが動作しない(IE+Officeは例外→Opera+Officeはだめでしょう?)のと同様で直接実行は不可能です。
 ブラウザからのHTML表示が前提条件であるなら、解決策として手っ取り早いのはWebサーバをローカルに構築するより手はないでしょう。 他の回避策は環境そのものをプログラミングするためあまりに手間がかかりすぎるかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
クライアントとはいえ試験段階ではサーバー機能が必要ということを理解しました。

お礼日時:2009/09/26 02:34

>「参考書」は「Perlテクニックブック」ミューテック著C&R出版です。


>「URLにcgiファイル名を指定して実行できる」という記述はその37ページ
> にあります。

Perl テクニックブックの p.38に、「スクリプトを実行できる Web サーバ
が必要になります。云々」と書いてありませんか?

もう既に回答は出つくしているようですので、レスポンスは不要です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご指摘のとおりの記述がありました。落ち着いてその後のページも読んでいれば、皆さんを煩わせることもなかったということでしょうか。
Perlをマスタする自信をなくして、少々パニクッてしまったようです。
ご容赦願います m(_ _)m

お礼日時:2009/09/26 02:32

> 自前サーバーを立ち上げるのが目的ではなく、Web上の特定の


> データベースサーバーと会話的な通信を行う方法をperlで
> 作ろうとしている次第です。

Webサーバ上のデータベースサーバと直接通信するような perl
プロクラムを作ろうとしているのでしたら、DBI モジュールの
勉強をしてください。

Webサーバ上の perl CGI をインターフェースにして、データベース
を操作するようなプログラムを作ろうとしているのでしたら、
LWP モジュールの勉強をしましょう。

どちらも Google 等で perl DBI や perl LWP で検索すると
参考となる記事がたくさん見つかります。

ところで
> ブラウザのURLにHttp://…/スクリプトファイル.pl を書き込んで
> 実行できると参考書にはある
とのことですが、ウェブサーバ上の CGI を作るための参考書を
読んでいるんじゃないですか。どんな環境が必要かきっと書かれて
いると思うので、もう一度 読み直してみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

ご指摘のとおりです。的確なるご助言、感謝とともに、エキスパートの眼力に敬服します。
ありがとうございました。

お礼日時:2009/09/26 02:44

OELでも使えばできるか。

まあ、どちらにしても普通の方法じゃないだろwww。イミフ
    • good
    • 0
この回答へのお礼

初心者の愚問で皆さんを煩わしたようです。
ありがとうございました。

お礼日時:2009/09/26 02:46

私もまだ初心者の域ですので間違ったアドバイスをしていたらごめんなさい。


WWWサーバーのないWindowsマシンなら、AN HTTPDで簡便なサーバーが構築できます。

詳細は以下サイトに載っています。

自宅マシンWWWサーバ化計画
http://www.kent-web.com/www/index.html

参考URL:http://www.kent-web.com/www/index.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
自前サーバーを立ち上げるのが目的ではなく、Web上の特定のデータベースサーバーと会話的な通信を行う方法をperlで作ろうとしている次第です。私の知識レベルが低すぎて、質問の仕方が悪いのかもしれません。ご親切な回答に感謝申し上げます。

お礼日時:2009/09/19 01:49

「サーバマシンとは別のPerlエンジンだけをインストールしたクライアントマシン上で」CGI のデバッグや動作確認をする為には、そのクライアントマシンにも本番サーバーと同じ Apache か何かをインストールするのが結局は早道だと思います。



それ以外の方法も確かにありますが、制約が多く理解度が深くないと使い物にならないです。

# クライアントマシンのApache設定で苦労する方は、Apache無での CGIデバッグにはもっと苦労するでしょう。

この回答への補足

ApacheとPerlでCGIを作り、プロバイダのWebサーバーにアップロードすることには成功しています。今回の質問は、そのようなCGIの開発ではなく、Web上の特定のデータベースサーバーと会話的な通信を行うためのperlスクリプトファイルを作るには、どのような開発環境を整えればいいのかという質問です。サーバーにアップロードするのではない、クライアント側でサーバーとの通信を制御するPerlスクリプト・ファイルとその画面上のインターフェースをHTMLで作ればできるはずですよね?

補足日時:2009/09/19 02:13
    • good
    • 0
この回答へのお礼

クライアントであっても動作試験のためにサーバー機能は必要ということですね。ありがとうございました。

お礼日時:2009/09/26 02:48

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