HTMLからPerlを呼び出す方法

このQ&Aのポイント
  • Perlを使って他のサイトのtxtファイルを表示させる方法
  • 拡張子がtxtのファイルをIE以外のブラウザでも表示する方法
  • HTMLからPerlを呼び出す方法について
回答を見る
  • ベストアンサー

HTMLからPerlを呼び出すには?

今、Perlで他のサイトのtxtファイル(中身はliタグやaタグのHTMLファイルで、そのサイトではSSIで呼び出されています)を、入手して表示させるプログラムを作っています。 これを、呼び出して、あたかも私のサイトのように見せるにはどうすればよいでしょうか? 現在はiframeを使ってそのままtxtファイルのアドレスを指定しているのですが、拡張子がtxtであるため、IEでしか見れないという不具合があります。 これを解決するために、とほほさんのwww入門 http://tohoho.wakusei.ne.jp/wwwperl2.htm#socket で紹介されているPerlを参考にしました。そのPerlのファイルをブラウザから直接URL指定すれば実行できるようにはなり、txtの中身が表示されるようになったのですが、どのようにHTMLから呼び出せばよいのかわかりません。 やはりSSIで実行するしかないのでしょうか。 javascriptの場合、<script>タグでHTMLに直接スクリプトを記述できますが、Perlでもそのようなことは可能ですか?

noname#227760
noname#227760
  • HTML
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

ウチでも試してみましたが、うまくいきました。 while (<S>) { print; } の部分を while(<S>){ last if /Content-Type/; } while (<S>){ $window->document->write($_); $window->document->write('<BR>'); } にしてみて下さい。 最初の、whileは、サーバーから来るヘッダ情報の読み捨てです。 ただ、スクリプトによる方法は、結局クライアント(ユーザ)側で実行しているので、perlScriptが実行できないユーザの処では、なにも表示されないことになりますが、それは、それでいいのでしょうか? そういう意味では、SSIが使えるならSSIで処理すべきだと思いますけど。

noname#227760
質問者

お礼

BLUEPIXYさん わざわざご自分の環境で試してくださるなんて感激です!どうもありがとうございます。 おかげさまで、無事に思い通りに動きました! これまで、iframeで実装しNetscapeで動かないなど、紆余曲折がありましたが、やっと実現することができました。 しかも、後から考えようと思っていたヘッダ情報の読み捨てまで先手を打って対処してくださる姿勢に、感動しました。 思い通りに動いた画面を見て寒気すら覚え、目にはうっすらと涙が…。 お会いすることができれば、もっと丁寧なお礼をさせていただきたいのですが、ネットというバーチャルな世界でのことゆえ、それができないのが非常に残念です。 まったくもって文句のつけようがありません。 本当にありがとうございました! 追伸: 実行環境は決まっているので、PerlScriptの件は問題ありません。ご心配いただきありがとうございます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ActivePerlをインストールしてたら <SCRIPT LANGUAGE="PerlScript"> $window->document->write('Hello world!'); </SCRIPT> みたいな感じで、javascriptと同様にHTMLに直接スクリプトを記述できます。

noname#227760
質問者

お礼

BLUEPIXYさん 素早いご回答ありがとうございます。 明日、さっそく試してみます!

noname#227760
質問者

補足

とほほさんのソースをそのままscriptタグの間に書いてみましたが、うまいこと実行されません。 別ファイルに書く場合と、下記のようにscriptタグに書く場合とでは、何かを変える必要があるのでしょうか? # <>は、&lt; &gt;に変えてあります。 # ActivePerlはインストール済みです。 <script language="PerlScript"> $addr = (gethostbyname("www.xxx.co.jp"))[4]; $name = pack("S n a4 x8", 2, 80, $addr); socket(S, 2, 1, 0); connect(S, $name); binmode(S); select(S); $| = 1; select(stdout); print S "GET /XXXXXXX.txt HTTP/1.0\r\n\r\n"; while (&lt;S&gt;) { print; } close(S); </script>

関連するQ&A

  • Netscape7でtxtファイルに記述されているHTML文をiframeでHTMLとして表示するにはどうしたらよいのでしょうか?

    初心者です。わかる方がいらっしゃればぜひ教えてください。 現在、サイトを構築しているのですが、 別のサイトにおいてある***.txtというファイルを iframeで取り込んでいます。 ***.txtの中身は、HTMLのタグ(<li>や<a href="">など)が記述されています。もともと、そのtxtファイルは別サイトでSSIで取り込まれているものなので、<HTML>タグや<BODY>タグなどはありません。 IEで私のサイトを閲覧すると、うまい具合にHTML文としてリンクなどが表示されるのですが、Netscape7やfirefox、Mozillaで閲覧をすると、HTMLのソースがそのまま表示されてしまいます。 試しにtxtファイルをダウンロードして、拡張子をhtmに変更し、iframeのsrc="XXX"の記述を、そのHTMLファイルのローカルパスにしてみたところ、Netscape7でもうまくHTMLとして認識されたようで、リンクなどが表示されました。 これはやはりブラウザの仕様なのでしょうか?iframeに何かの記述を追加すれば解決するのでしょうか? 必ずしもiframeにこだわっているわけではありませんので、何か別の解決方法があればそれでも結構です。 IEでもNetscape7などのブラウザでも、うまくHTMLとして表示されれば手段は問いません。 ちなみに、別サイトのtxtの拡張子は変更できません。 # その別サイトの管理者には、そのtxtファイルを取り込むことについて了解をいただいています。

    • ベストアンサー
    • HTML
  • cmsをつかって吐き出されたHTMLファイルの中身を、別のページで共有

    cmsをつかって吐き出されたHTMLファイルの中身を、別のページで共有したいと考えております。 実際には共通のサイドメニューの部分をCMSで生成して、一つのhtmlファイルとして生成し、そのhtmlファイルの中身を共通する各ページの部分に読み込みたいのですが。。 SSIやphp、javascript、iframeなどを使ってhtmlファイルを外部から読み込む為の方法がいくつかありますが、自動で生成されたHTMLファイルの、任意の部分だけ(bodyタグ以下のソースだけ、IDを指定しているdiv部分のみなど)を指定して読み込む方法があれば教えてください。 サーバーの負荷も考えるとできれば、ssiではなくjavascriptで実行できればと考えております。どなたか教えて下さい、お願いします。

  • Apache2.2でPerlを呼び出すSSIを使ったHTMLをloca

    Apache2.2でPerlを呼び出すSSIを使ったHTMLをlocalhostで動かそうとしています。 AddHandler cgi-script .cgi .plに変更。 exec cmdをHTMLファイルに埋め込みました。 <!--#exec cmd="/PROGRA~1/APACHE~1/Apache2.2/cgi-bin/counter.pl counter"--> インターネットのApacheでSSIを使う方法を読み,httpd.confの中に Options FollowSymLinks Multiviews の後にIncludesをつけ   AddType text/html .shtml と   AddHandler server-parsed .shtml を加えました。しかし、localhostで実行するとHTMLのSSIの部分だけ表示されません。 (アクセスカウンターのカウンターだけ表示されません)。エラーログには ”指定されたファイルが見つかりません。 : don't know how to spawn cmd child process: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/counter.shtml” と記録されていました。 どうしたらよいのでしょうか。 どなたか解決できるかた、回答よろしくおねがいします。

    • 締切済み
    • CGI
  • Apache2.2でPerlを呼び出すSSIを使ったHTMLをloca

    Apache2.2でPerlを呼び出すSSIを使ったHTMLをlocalhostで動かそうとしています。 exec cmdをHTMLファイルに埋め込みました。インターネットのApacheでSSIを使う方法を読み,httpd.confの中に Options FollowSymLinks Multiviews の後にIncludesをつけ 念のため Options Indexes FollowSymlinks の後にもMultiviews Includes をつけ   AddType text/html .shtml と AddHandler server-parsed .shtml を加えました。しかし、localhostで実行するとHTMLのSSIの部分だけ表示されません。 (アクセスカウンターのカウンターだけ表示されません)。どうしたらよいのでしょうか。 どなたか解決できるかた、回答よろしくお願いします。

  • Perlの部分的なHTML出力

    調べてみたんですがちょっと探し当てられなかったので教えてください。 HTMLファイルの中である一部分だけPerlによる出力でページを表示させたいのですが、それは可能でしょうか? 自分なりに調べて試してみたのは、HTMLで<IMG>タグをつかってPerlを呼び出し、Perlにprint文で出力を書けばいいのかな? とやってみましたが、できません。 全てPerlで出力するしか方法はないのでしょうか? ご解答お願いします

  • HTMLのタグをPerlに書き換えるには?

    HTMLのタグをPerlに書き換えたいのですが コピー&ペースト感覚でPerl変換が出来るような エディターかサイトはないでしょうか? 今のHTMLのデザインをそのまま使いたいので、、 HTMLへの書き出し(<Print>)・・・の部分だけで いいのですが。  御指導宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • PerlのHTMLファイルの読み込み

    UNIXを使っています。 HTMLファイルを読み込み、その中にあるHTMLタグのチェック(終了タグがあるか、など)をするというプログラムを作っています。 URLを入力し、HTMLファイルを直接拾ってくるようなことがPerlでは出来るそうなんですがどういう風にプログラミングすればいいのでしょうか?

  • HTML上(javascript)からCGIを実行する方法

    javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI) を実行する方法を探しています。 下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に 『test』と表示するのみ)を表示したいと考えています。 利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、 cgiが使用できるサーバ上のcgi結果を取得したいものです。 通常のcgiのように、1ページでcgi結果を表示するものではなく、 HTMLファイルの一部にcgi処理結果を表示させたいものです。 そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの 実行結果を表示する事は出来ないのでしょうか。 よろしくお願い致します。 ※下例のプログラムではcgi結果は表示されませんでした・・・。 ---<index.htm>---------------------------------------- <HTML> <BODY> <SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT> </BODY> </HTML> ---<test.cgi>---------------------------------------- #!/usr/bin/perl print "test"

  • IFRAMEタグで設定したサイズに合わせHTMLファイルを表示する方法はありますか?

    テキストでソースファイルを書き換えてHPを作成しています。 あるHTMLファイルの中にIFRAMEタグを用いて区切られたエリアを作り、別のHTMLファイルAを表示しようと考えています。ファイルAの幅に比べてIFRAMEタグで指定している幅が小さいため、通常のままでは左右のスクロールバーが表示されてしまい、非常に見にくいです。IFRAMEタグに合わせてファイルAの縮小表示させるオプション命令のようなものはありませんか?ファイルA自体は別の箇所でも使用しているため、ファイルAそのもののサイズを小さくしてしまうことは出来ません。 どうかよろしくお願いいたします。

  • perl HTML::TreeBuilder返り値

    perl、HTML::TreeBuilderモジュールを使ってHTMLからほしい情報を抽出しています。 探したタグがない場合に、次の処理にいけるように判定したいのですが、うまくいきません。 以下抽出部分のソースです。 my $tree = HTML::TreeBuilder->new; $tree->parse($html); my $items = $tree->look_down('class', 'referencelink')->find('li'); $items = $items->as_text;   HTML内に<li class="referencelink">というタグがない場合 $items にどんな値が入るのでしょうか。 if (!defined($items)) や if ($items=="")で判定しても、 my $items = $tree->look_down('class', 'referencelink')->find('li'); で処理が止まってしまいます。 どうしたらよいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう