![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Perlで作成したCGIについて
Perlで作成したCGIについて質問させていただきます。
####################
##(1)system.cgi ##
####################
#!c:/Perl/bin/perl.exe
use strict;
use warnings;
use CGI;
use CGI::Carp('fatalsToBrowser');
use CGI qw(:standard);
print "Content-type:text/html;charset=utf8\n\n";
system('C:\\test.txt');
#####################################################
C直下にあるtest.txtの中身は「abcd」など
簡単なものです。
#####################################################
###################
##(2)win32.cgi ##
###################
#!c:/Perl/bin/perl.exe
use strict;
use warnings;
use CGI;
use CGI::Carp('fatalsToBrowser');
use CGI qw(:standard);
use Win32::API;
print "Content-type:text/html;charset=utf8\n\n";
my $MessageBox = Win::API -> new("user32","MessageBoxA","NPPN","N");
$MessageBox -> Call(0,"HelloWorld","Message",0);
#####################################################
#####################################################
以下にスペックを書きます。
Microsoft Windows XP
Professional
version2002
Service Pack2
Genuine Intel(R)CPU
L2300 @1.50GHz
1.50GHz,1.49GB RAM
・ActivePerl
ver5.10.1 built for MSWin32-x86-multi-thread
・Apache
Apache 2.2.14(Win32)
#####################################################
上記の(1)、(2)のプログラムをエクスプローラ上(ローカル)で実行させて(1)ではテキストファイルを、
(2)ではメッセージボックスを表示させたいです。
結果は時間がかかるだけでTimeOutの設定である5分で切れてしまい何も起こりません。
しかし、全く同じプログラムで拡張子を.plに変更してコマンドプロンプトで実行すると、
期待通り(1)はテキストファイルが開かれ、(2)ではメッセージボックスが出てきます。
(1)、(2)ともCGIではsystemおよびMessageBoxの部分をコメントアウトして
print文などを書けば普通にエクスプローラに表示されます。
(かなりhtmlとしては不備があると思いますが・・・)
どうすればCGIで(1)、(2)のプログラムが期待通りの動きをするのか
どうぞご教授のほどよろしくお願いいたします。
何か足りない情報や意味の分かりづらい個所がありましたら、仰ってください。
ちなみにこのプログラムは公開するために作成しているのではありません。
下手な説明、長文すみません。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
CGIは、クライアントに対してはhtmlを動的に生成し出力するのが(一般的な)使い方です。
やりたいことを想像すると、以下のようなcgiになると思います。
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use CGI::Pretty;
my $java_script = << "END_SCRIPT";
function onload() {
alert('Hello javascript', 'New Window', 'width=300, height=300');
};
END_SCRIPT
my $q = CGI->new();
print $q->header( -charset => 'UTF-8' ),
$q->start_html(
-lang => 'ja',
-title => ' T I T L E ',
-script => { -language => 'javascript', -code => $java_script }
);
my $file = shift || '/tmp/tmp.txt';
open my $fh, '<', $file or die "$!:$file";
my $text = do {local $/ = undef; <$fh>};
close $fh or die "$!:$file";
print $q->p($text), $q->end_html;
色々書いてありますが、上のcgiを実行すると以下の内容がprintされるだけです。
---
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<title> T I T L E </title>
<script type="text/javascript">//<![CDATA[
function onload() {
alert('Hello javascript', 'New Window', 'width=300, height=300');
};
//]]></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>
aaaa
</p>
</body>
</html>
回答ありがとうございます。
お礼が遅れてしまい、大変失礼いたしました。
補足なのですが、win32::APIを必ず使ってウインドウ画面を出力させたいと考えております。
説明不足で申し訳ありません。
もしよろしければ、さらに、ご教授のほどよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LWP::Simpleでのgetについて
-
【ExcelVBA】commandButtonをク...
-
VBA This Workbookモジュール...
-
pythonのプログラミングについ...
-
モジュールからフォームのボタ...
-
VBAで別モジュールへの変数の受...
-
本当にPublicな変数(配列で)
-
'Range'メソッドは失敗しました
-
現在アクティブなフォーム名を...
-
VBAで「メモリが不足しています」
-
グラフのX,Y座標を取得したい
-
Cygwin インストール Perlを使...
-
CGI.pmはもう古い!?
-
perlからphpに変数の値を渡したい
-
Excel VBAでグローバルな変数は...
-
時間がかかり過ぎたプロセスを...
-
クラスモジュールについて
-
LCD ディスプレイを Raspberry ...
-
cgi(perl)で文中のURLを自動で...
-
VBAでoutlook365が起動しません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlでgoogle newsのRSSを取得2
-
Web::Scraperの使い方で
-
mechanizeのタイムアウト処理に...
-
VHDLについてですが何がお...
-
PerlのWeb::Scraperと正規表現...
-
Perlで作成したCGIについて
-
Perl/Tk Entry に対して見出し...
-
python wxpythonについて質問です
-
条件分岐によってuseやrequire...
-
TwitterAPI1.1でGetメソッド(...
-
Perl/TkでURLを既定のブラウザ...
-
Perl/TkのWWW::MechanizeのGET...
-
LWP::Simpleでのgetについて
-
Perl LWPでのIPv6エラー
-
perlでhtmlファイルを取得した...
-
perlでのオブジェクト指向の書き方
-
Perl webのテキストボックスに...
-
Win32でInputBoxを実装するには?
-
Perl での XML 処理での DTD 宣...
-
ネストされているRSSのデー...
おすすめ情報