とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


webp:vol51

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

webp:vol51 [2020/06/23 14:10] (現在)
行 1: 行 1:
 +====== Code.006 CGI(Perl)基本動作 その6:「モジュールを使う」 前編 ======
 +<html><pre style="font-family:monospace; font-size:10pt">
 +   Code.006                                                 2002年11月19日発行
 +■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■
 +                           【 Webプログラミング 】
  
 +                       〜 猫的プログラマーとその軌跡 〜
 +■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■
 +
 +              ▼毎週月曜日に配信しています。
 +              ▼等幅フォントでご覧いただくとキレイに見えます。
 +              ▼登録・解除はこちらから可能です。
 +                &lt; http://www.ichikoro.com/webp/ &gt;
 +                  ※ぜひお友達にもご紹介ください(^^)/
 +
 +
 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 + CGI(Perl)基本動作 その6:「モジュールを使う」
 +──────────────────────────────────────
 +
 +すみません、配信が遅れてしまいました(平謝)
 +というわけで今回は本当にサンプルの紹介だけです。
 +詳細な解説は来週掲載しますので、平にご容赦を( ^.^)( -.-)( _ _)
 +
 +ってな感じですので、今回はCode.004でご紹介したソースを
 +書き換えてみたいと思います。HTMLは同じですが、CGIが大き
 +く変わっています。
 +
 +・Code.004「URLエンコード・デコード」
 +  http://backno.mag2.com/reader/BackBody?id=200210280500000000080329000
 +
 +
 +───────
 + ソース1(HTML)
 +───────
 +&lt;HTML&gt;
 +&lt;HEAD&gt;
 +    &lt;TITLE&gt;クエリー表示&lt;/TITLE&gt;
 +&lt;/HEAD&gt;
 +&lt;BODY bgcolor="#FFFFFF"&gt;
 +
 +&lt;H2&gt;クエリー表示&lt;/H2&gt;
 +
 +&lt;FORM action="printquery2.cgi" method="POST"&gt;
 +    氏名:&lt;INPUT type="text" name="namae"&gt;&lt;BR&gt;
 +    年令:&lt;INPUT type="text" name="age" size="10"&gt;歳&lt;BR&gt;
 +    性別:&lt;INPUT type="radio" name="sex" value="man"&gt;男性 
 +          &lt;INPUT type="radio" name="sex" value="woman"&gt;女性&lt;BR&gt;
 +    居住地域:&lt;SELECT name="area"&gt;
 +                    &lt;option value="1"&gt;北海道
 +                    &lt;option value="2"&gt;東北
 +                    &lt;option value="3"&gt;関東
 +                    &lt;option value="4"&gt;東海
 +                    &lt;option value="5"&gt;北陸
 +                    &lt;option value="6"&gt;関西
 +                    &lt;option value="7"&gt;中国
 +                    &lt;option value="8"&gt;四国
 +                    &lt;option value="9"&gt;九州・沖縄
 +                    &lt;option value="99"&gt;その他
 +            &lt;/SELECT&gt;&lt;BR&gt;
 +
 +    好きな食べ物:
 +        &lt;INPUT type="checkbox" name="koubutsu" value="ichigo"&gt;いちご 
 +        &lt;INPUT type="checkbox" name="koubutsu" value="mikan"&gt;みかん 
 +        &lt;INPUT type="checkbox" name="koubutsu" value="ringo"&gt;りんご 
 +        &lt;INPUT type="checkbox" name="koubutsu" value="banana"&gt;ばなな&lt;BR&gt;
 +    &lt;BR&gt;
 +    何か一言:&lt;BR&gt;
 +    &lt;TEXTAREA rows="5" cols="50" name="word"&gt;&lt;/TEXTAREA&gt;&lt;BR&gt;
 +    &lt;BR&gt;
 +    &lt;BR&gt;
 +    &lt;INPUT type="submit"&gt;
 +&lt;/FORM&gt;
 +
 +&lt;HR&gt;
 +&lt;DIV align="right"&gt;&lt;SMALL&gt;&lt;I&gt;Webプログラミング&lt;/I&gt;&lt;/SMALL&gt;&lt;/DIV&gt;
 +
 +&lt;/BODY&gt;
 +&lt;/HTML&gt;
 +
 +
 +───────
 + ソース1(CGI)
 +───────
 +#!/usr/bin/perl
 +
 +;#
 +;#渡されたクエリーを表示する(printquery2.cgi)
 +;#
 +
 +#----------------------------------------------------------------------#
 +#                             モジュール                               #
 +#----------------------------------------------------------------------#
 +use strict;                 #コーディングの厳格化
 +use CGI qw(:standard);        #CGIモジュール
 +
 +
 +#======================================================================#
 +#                           メインルーチン                             #
 +#======================================================================#
 +package main;
 +{
 +
 +    my $q = new CGI();
 +    my @qname;
 +    my $name;
 +
 +    #--------------------------------------------------#
 +    #                全クエリー名の取得                #
 +    #--------------------------------------------------#
 +    @qname = $q-&gt;param();
 +
 +    #--------------------------------------------------#
 +    #                    ヘッダ表示                    #
 +    #--------------------------------------------------#
 +    $|=1;
 +    print    $q-&gt;header("text/html"),            #デフォルトが "text/html" のため書かなくても良い
 +            $q-&gt;start_html(
 +                    -title   =&gt; "printQuery2",
 +                    -BGCOLOR =&gt; "#FFFFFF"  ),
 +
 +            $q-&gt;h2( {-align =&gt; "center"}, "printQuery2");
 +    
 +    print    qq{&lt;DIV align="center"&gt;\n},
 +            qq{&lt;TABLE border="1"&gt;\n};
 +
 +    #--------------------------------------------------#
 +    #                    値を表示                      #
 +    #--------------------------------------------------#
 +    foreach $name (@qname){
 +        printf( qq{&lt;TR&gt;&lt;TD align="right"&gt;%s&lt;/TD&gt;&lt;TD&gt;%s&lt;/TD&gt;&lt;/TR&gt;\n}
 +                    , $name
 +                    , $q-&gt;param($name) );
 +    }
 +
 +    #--------------------------------------------------#
 +    #                    フッタ表示                    #
 +    #--------------------------------------------------#
 +    print &lt;&lt;"END_OF_HTML";
 +&lt;/TABLE&gt;
 +&lt;/DIV&gt;
 +
 +&lt;HR&gt;
 +&lt;DIV align="right"&gt;&lt;SMALL&gt;&lt;I&gt;Webプログラミング&lt;/I&gt;&lt;/SMALL&gt;&lt;/DIV&gt;
 +END_OF_HTML
 +
 +    print $q-&gt;end_html();
 +
 +    #--------------------------------------------------#
 +    #                      正常終了                    #
 +    #--------------------------------------------------#
 +    exit(0);
 +}
 +
 +__END__
 +
 +
 +───────
 +   実行方法
 +───────
 +テキストエディタ(メモ帳やSimpleText)などで上記のソース(プログラム)を
 +保存してください。ソース1は適当な名前(xxxx.html)でOKです。ソース2は
 +「printquery2.cgi」とすると、HTMLを変更せずにすみます。
 +
 +CGIの詳しい実行方法については、Code.001をご参照ください。
 +http://backno.mag2.com/reader/BackBody?id=200210050820000000080329000
 +
 +  ★重要!
 +    このCGIはセキュリティーホールを含みます。
 +    学習以外の用途には使用しないでください。
 +
 +───────
 +    解 説
 +───────
 +
 +上記のサンプルだと少々複雑ですので、もう少し簡潔に
 +書いてみましょう。
 +
 +    #!/usr/bin/perl
 +
 +    ;#
 +    ;#特定のクエリーを表示する
 +    ;#
 +
 +    use CGI qw(:standard);        #CGIモジュール
 +
 +    #-- オブジェクト作成 --#
 +    $q = new CGI();
 +
 +    #-- 値取得 --#
 +    $value = $q-&gt;param("age");        #クエリー名"age"の値を取得
 +
 +    #-- 表示 --#
 +    print $q-&gt;header();                    #print "Content-type: text/html\n\n";
 +    print $value;
 +
 +    exit(0);
 +
 +
 +上記のCGIにクエリー"age"を渡してみてください。
 +このサンプルで大体のイメージはつかんでいただけるでしょうか?
 +
 +
 +───────
 +   次回予告
 +───────
 +時間の関係で、説明がおざなりになってしまいました(^^;
 +次回はもう一個別のサンプルをご紹介するとともに、
 +詳しく解説をしたいと思います。
 +
 +
 +───────
 +  分からない
 +───────
 +いまいちよく分からない場合は、以下へれっつらごー。
 +
 +  ・サポートBBS
 +    このメルマガ専用のサポート掲示板
 +      http://www.ichikoro.com/webp/bbs/
 +
 +  ・CGIプログラミングML
 +    CGIなどWebに関する話題を繰り広げるメーリングリスト
 +    このメルマガとは何の関係もありませんので発言時は注意を。
 +      http://www.ichikoro.com/cgi/ml/
 +
 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 +                           編    集    後    記
 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 +う〜ん、ここしばらく色んな書類に追われています(^^;
 +というわけで配信が後倒しになってしまいました。
 +詳しい状況などはまた来週にこの場所で。
 +心苦しいぞ〜。
 +
 +
 +という状況にも関わらず、日曜日にゲームボーイアドバンス買っちゃいました(笑)
 +もうお店で見たときから我慢できず、ここ数日はファイアーエムブレム漬けです。
 +中学生くらいのころ、ゲーム事態の面白さはもちろん世界観にもやられてしまって
 +いたのを思い出し、あまりの懐かしさに泣けてきました(^^ゞ
 +
 +    ・ファイアーエムブレム 〜封印の剣〜
 +      http://www.nintendo.co.jp/n08/afej/
 +        ♪ふぁいあーえむぶれむ、手強いシミュレーション〜
 +
 +昔やり込んでいたスーファミ版(紋章の謎)とは登場人物も世界も、もちろんスト
 +ーリーも違うんですが、システムは正しい方向に進化しているしチョコッと難し目
 +の所もそのまま。世界観も気に入りました。
 +
 +聖戦の系譜(続編)がダメダメだったというのもあるんでしょうが(^^;
 +そうそう、ダメダメといえばファミコン版の外伝がちょっとキモ.....。
 +
 +
 +と、最近ここまで熱く語れるゲームにお目にかかれてないなぁ、というか
 +最近全くやってなかったからか?(^^;とりあえず週末に給料が入ったら今
 +度は「逆転裁判」の予定です(笑)
 +
 +
 +それでは、また来週お会いしましょう (^-^)/~~
 +
 +■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 +
 +                   【 Webプログラミング Code Sample 】
 +
 +                    発  行 : ichikoro.com
 +                発行責任者 : 勝部 麻季人
 +                              &lt; mailto:katsube@ichikoro.com &gt;
 +                 Webサイト : &lt; http://www.ichikoro.com/webp/ &gt;
 +            お問い合わせ先 : &lt; mailto:mm-webp@ichikoro.com &gt;
 +
 +                            Powerd by まぐまぐ
 +    All Right Reserved, CopyRight(C) 2001 Webプログラミング Code Sample
 +■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 +</pre></html>

関連ページ

webp/vol51.txt · 最終更新: 2020/06/23 14:10 (外部編集)