ぱるも日記

ぱるも日記は id:palmo がプログラミング言語 Perl を1から勉強していく日記です。

2006-07-25

CGI モジュール(1) パラメータを受け取る

CGI プログラムの基本的な作り方がわかってきたので、そろそろ CGI モジュールを勉強したいと思います。CGI モジュールは Perl5 標準の組み込みモジュールで、CGI プログラムを作るのに便利な機能が利用できるようになるモジュールです。(Japanized Perl Resources Project にて日本語に翻訳された POD も公開されています)

CGI モジュールの利用方法は、従来の「関数型」(関数エクスポートして、モジュールの外部で関数を利用する)と、「オブジェクト型」(new クラスメソッドを呼び出して CGI パッケージのインスタンスを生成してメソッドを利用する)という2つの方法があります。前者の関数型は手軽に利用できますが、多くの関数エクスポートされる事になりますので、識別子の衝突など名前空間の汚染が心配です。後者のオブジェクト型は多少手続きが必要ですが、名前空間の汚染はありません。

多くのモジュールは、このように「関数型」と「オブジェクト型」という2つのインターフェースを提供していますが、ぱるも日記では主にオブジェクト型を利用していきたいと思います。ただし、Perl によるオブジェクト指向プログラミングは「関数型に比べて遅い」という事を留意しておかなくてはいけませんね。(^_^)

CGI モジュールオブジェクトとして利用するには、まず use してから、コンストラクタ new を呼び出します。慣例として CGI オブジェクトを入れる変数名には $q が使われるそうです。(query からきているのかな?)

use CGI;
my $q = CGI->new();

では、CGI モジュールの機能の一部を利用してみたいと思います。

パラメータの受け取り」は、環境変数 QUERY_STRING を介する方法と、標準入力を介する方法という2通りの方法を勉強しました。

CGI モジュールを利用すると、このパラメータの受け取りをとても簡単に行なう事ができます。こうなると、上のエントリで勉強した方法は「車輪の再発明」と呼ばれてしまいそうですが、CGI の仕組みを理解する為でしたのでお許しください。(^_^;)

与えられたパラメータの値を取得するには、param メソッドを利用します。このメソッドは "GET" の QUERY_STRING 形式にも "POST" の標準入力形式にも対応しているので、これらのリクエストメソッドの違いを意識する事なく利用できます。

例えば、以下のような URL で GET リクエストされたとします。

/action.cgi?apple=red&banana=yellow&peach=pink

「名前=値」のリストが「&」で区切られてるのでしたね。(^_^)

この action.cgi の中で param メソッドを使えば、以下のように名前に対応する値を取得できます。

print $q->param('apple'), "\n";   # red
print $q->param('banana'), "\n";  # yellow
print $q->param('peach'), "\n";   # pink

また、引数を渡さずに param メソッドを呼び出すと、パラメータとして渡された名前のリストを取得できます。下のコードでは全てのパラメータを列挙しています。

for my $name ($q->param) {
  print "$name is ", $q->param($name), ",\n";
}

上のコードでは、全てのパラメータを列挙します。簡単ですね。(^_^)


POST でパラメータを受け取る」で作った echo.cgi を、CGI モジュールを使って作り変えると、以下のようになりました。テンプレートは流用しています。

echo2.cgi 実行結果 (ソースコードテンプレート

自前でパラメータ解析を実装していた echo.cgi と比べると、大分コードが短くなっています。

また、もう一つのメリットとして、param メソッドを通じて取得した値は自動的にアンエスケープされるので、日本語や改行を入力しても、ちゃんと表示されます。便利ですね。(^_^)

llgjleeuWpllgjleeuWp 2006/09/15 15:44 1s5Mvwgd1IkV 2sOy0g2rnh8xdL JJuFMufHZpE8

cub scout patchescub scout patches 2007/02/02 04:29 Just as this fellow seemed disposed to lean forward to being present at the southward to enable him to possess an art so admirable that it behooves all his subordinates to learn what lady Mr. http://www.qvgs.com/34/cub-scout-patches.html <a href=”http://www.qvgs.com/34/cub-scout-patches.html”>cub scout patches</a> [url]http://www.qvgs.com/34/cub-scout-patches.html[/url]

wicks diywicks diy 2007/02/05 14:24 In this manner. http://www.xvyn.com/55/wicks-diy.html <a href=”http://www.xvyn.com/55/wicks-diy.html”>wicks diy</a> [url]http://www.xvyn.com/55/wicks-diy.html[/url]

momomomo 2007/03/07 15:18 ここの動画サイト面白いよ!http://www.ganzis.jp

Shari GarrettShari Garrett 2007/07/08 10:36 <a href=http://www.freewebs.com/faevoj/bay-window-roofs.html >Instructions On Building A Bay Window</a>
[url=http://www.freewebs.com/faevoj/bay-window-roofs.html] Instructions On Building A Bay Window [/url]
<a href=http://www.freewebs.com/faevoj/strawberry-shortcake-hat.html >Strawberry Shortcake Hat</a>
[url=http://www.freewebs.com/faevoj/strawberry-shortcake-hat.html] Strawberry Shortcake Hat [/url]
<a href=http://www.freewebs.com/faevoj/pa-license-plates.html >Wyoming License Plates</a>
[url=http://www.freewebs.com/faevoj/pa-license-plates.html] Wyoming License Plates [/url]
<a href=http://www.freewebs.com/faevoj/free-park-clipart.html >Free Park Clipart</a>
[url=http://www.freewebs.com/faevoj/free-park-clipart.html] Free Park Clipart [/url]
<a href=http://www.freewebs.com/faevoj/buy-fruit-pies.html >Fruit Juice Companies</a>
[url=http://www.freewebs.com/faevoj/buy-fruit-pies.html] Fruit Juice Companies [/url]
<a href=http://www.freewebs.com/faevoj/maui-real-estate-brokers.html >Real Estate Brokers Dallas</a>
[url=http://www.freewebs.com/faevoj/maui-real-estate-brokers.html] Real Estate Brokers Dallas [/url]
<a href=http://www.freewebs.com/faevoj/rolling-stones-tab.html >Rolling Stones Tours</a>
[url=http://www.freewebs.com/faevoj/rolling-stones-tab.html] Rolling Stones Tours [/url]
<a href=http://www.freewebs.com/faevoj/polk-county-spca.html >Polk County Tennessee</a>
[url=http://www.freewebs.com/faevoj/polk-county-spca.html] Polk County Tennessee [/url]
<a href=http://www.freewebs.com/faevoj/dog-wall-clock.html >Cheap Wall Clocks</a>
[url=http://www.freewebs.com/faevoj/dog-wall-clock.html] Cheap Wall Clocks [/url]
<a href=http://www.freewebs.com/faevoj/science-fair-rubric.html >Science Fair Materials</a>
[url=http://www.freewebs.com/faevoj/science-fair-rubric.html] Science Fair Materials [/url]

Pasquale PrestonPasquale Preston 2007/07/11 11:43 <a href=http://deejee.extra.hu/war-war-2.html >Maps Of World War 2</a>
[url=http://deejee.extra.hu/war-war-2.html] Maps Of World War 2 [/url]
<a href=http://deejee.extra.hu/pittsburgh-steelers-news.html >Pittsburgh Steelers Roster</a>
[url=http://deejee.extra.hu/pittsburgh-steelers-news.html] Pittsburgh Steelers Roster [/url]
<a href=http://deejee.extra.hu/ohio-divorce-lawyer.html >New York Bextra Lawyer</a>
[url=http://deejee.extra.hu/ohio-divorce-lawyer.html] New York Bextra Lawyer [/url]
<a href=http://deejee.extra.hu/loan-for-personal-debt.html >Bad Credit Finance Loan Personal</a>
[url=http://deejee.extra.hu/loan-for-personal-debt.html] Bad Credit Finance Loan Personal [/url]
<a href=http://deejee.extra.hu/simcoe-county-health-unit.html >King County Health Department</a>
[url=http://deejee.extra.hu/simcoe-county-health-unit.html] King County Health Department [/url]
<a href=http://deejee.extra.hu/new-york-times-book-list.html >New York Times Bestseller List</a>
[url=http://deejee.extra.hu/new-york-times-book-list.html] New York Times Bestseller List [/url]
<a href=http://deejee.extra.hu/auto-accident-attorneys-nyc.html >Auto Accident Attorneys Melbourne</a>
[url=http://deejee.extra.hu/auto-accident-attorneys-nyc.html] Auto Accident Attorneys Melbourne [/url]
<a href=http://deejee.extra.hu/ratio-word-problems.html >Third Grade Word Problems</a>
[url=http://deejee.extra.hu/ratio-word-problems.html] Third Grade Word Problems [/url]
<a href=http://deejee.extra.hu/wamu-home-loans.html >Zero Down Home Loans</a>
[url=http://deejee.extra.hu/wamu-home-loans.html] Zero Down Home Loans [/url]
<a href=http://deejee.extra.hu/1998-dodge-neon.html >Dodge Neon Srt-4</a>
[url=http://deejee.extra.hu/1998-dodge-neon.html] Dodge Neon Srt-4 [/url]

ぱるも日記

Clarissa DominguezClarissa Dominguez 2007/07/13 03:01 <a href= http://rjxerx.50webs.com/university-of-south-australia.html >Medical University Of South Carolina</a>
[url=http://rjxerx.50webs.com/university-of-south-australia.html]Medical University Of South Carolina[/url]
<a href= http://rjxerx.50webs.com/ice-age-ii.html >Next Ice Age</a>
[url=http://rjxerx.50webs.com/ice-age-ii.html]Next Ice Age[/url]
<a href= http://rjxerx.50webs.com/thomas-jefferson-bust.html >Inventions Made By Thomas Jefferson</a>
[url=http://rjxerx.50webs.com/thomas-jefferson-bust.html]Inventions Made By Thomas Jefferson[/url]
<a href= http://rjxerx.50webs.com/ajax-car-rental.html >Buget Car Rental</a>
[url=http://rjxerx.50webs.com/ajax-car-rental.html]Buget Car Rental[/url]
<a href= http://rjxerx.50webs.com/air-purifier-home.html >Kenmore Air Purifier</a>
[url=http://rjxerx.50webs.com/air-purifier-home.html]Kenmore Air Purifier[/url]
<a href= http://rjxerx.50webs.com/free-php-forums.html >Free Sample Razor</a>
[url=http://rjxerx.50webs.com/free-php-forums.html]Free Sample Razor[/url]
<a href= http://rjxerx.50webs.com/adult-halloween-cards.html >Scary Adult Halloween Games</a>
[url=http://rjxerx.50webs.com/adult-halloween-cards.html]Scary Adult Halloween Games[/url]
<a href= http://rjxerx.50webs.com/sales-management-plan.html >Project Quality Management Plan</a>
[url=http://rjxerx.50webs.com/sales-management-plan.html]Project Quality Management Plan[/url]
<a href= http://rjxerx.50webs.com/flower-girl-gift.html >Toddler Flower Girl Dresses</a>
[url=http://rjxerx.50webs.com/flower-girl-gift.html]Toddler Flower Girl Dresses[/url]
<a href= http://rjxerx.50webs.com/air-travel-finder-thai-air.html >Finder Air Travel Finder Abadan</a>
[url=http://rjxerx.50webs.com/air-travel-finder-thai-air.html]Finder Air Travel Finder Abadan[/url]

ぱるも日記

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/palmo/20060725/cgi
リンク元