blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_2

Perl 「 モジュール 」 CGI.pm CGI::Pretty を試す (0xf3)

Perl 「 モジュール 」 CGI.pm CGI::Pretty を試す (0xf3)

目次 - Perl Index



Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0xf3 回。

CGI.pm で改行やインデントを自動で付加してくれるサブクラス「 CGI::Pretty 」を試す。



CGI::Pretty



モジュール「 CGI::Pretty 」は、Brian Paulsen という開発者が開発した、自動改行およびインデントのためのモジュールです。

CGI::Pretty は、CGI.pm の「 サブクラス 」であることからこの名称になっている様です。


サブクラス



「 サブクラス 」( subclass ) というのは、オブジェクト指向プログラミング ( object oriented programing ) で、あるクラスの機能 ( 具体的にはプロパティやメソッド ) を継承しつつ、追加機能を実装したクラスを意味します。

つまり、CGI::Pretty は、CGI.pm の機能を継承しつつ、自動改行やインデントといった追加機能を実装しているクラス ( モジュール ) です。


CGI::Pretty を利用する



CGI::Pretty は、use プラグマ行で「 CGI 」の代わりに「 CGI::Pretty 」を指定するだけで利用出来ます。とても簡単です。


use warnings;
use strict;

# use CGI;
use CGI::Pretty;


その効果は、コマンドラインでプログラムを実行すると良く分かります。前回確認したものと同じプログラムを実行してみます。結果は次の通りです。


Content-Type: text/html; charset=euc-jp

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<title>HTML escape</title>
<link rel="stylesheet" type="text/css" href="./style/style00.css" />
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
</head>
<body>
<h3>
HTML 出力の確認
</h3>
<h4>
テキスト
</h4>
<div class="test_txt">
<form method="post" action="http://localhost" enctype="multipart/form-data"><p>
<input name="usr_name" type="text" value="" size="40" />
</p>
<p>
<input name="submit" type="submit" value="submit" />
</p>
</form></div>
<h4>
param() のみ
</h4>
<div class="test_txt">
<p />
</div>
<h4>
escapeHTML() で処理
</h4>
<div class="test_txt">
<p>

</p>
</div>

</body>
</html>


「 body 」要素内の各要素に、改行とインデントが自動で追加されています。


CGI::Pretty のカスタマイズ



CGI::Pretty は、標準で「 a 」要素と「 pre 」要素は整形しません。なぜならば、Web ページd意図された構成を乱すおそれがあるからです。

こうした整形除外対象になる要素は、CGI::Pretty に用意された特別な配列を使って、任意に追加出来ます。


カスタマイズ 整形対象から要素を除外する



専用の特別な配列の名前は「 @CGI::Pretty::AS_IS 」です。設定は次の様に行います。


push @CGI::Pretty::AS_IS, qw( div, h4 );



これで、「 div 」要素と「 h4 」要素が CGI::Prety の整形対象から除外されます。


カスタマイズ インデント



CGI::Pretty のインデントは、通常タブストップ 1 つ分に設定されていますが、変数 $INDENT を設定することで、任意に指定出来ます。


# 半角空白 2 つ
$CGI::Pretty::INDENT = " ";

# タブ 2 つ
$CGI::Pretty::INDENT = "\t\t";




カスタマイズ 改行



CGI::Pretty の改行は、通常 1 つだけですが、変数 $LINEBREAK を設定することで、改行数を任意に指定出来ます。


# 2 つの改行
$CGI::Pretty::LINEBREAK = "\n\n";




CGI.pm に合わせる



CGI::Pretty を利用しつつ CGI.pm 標準の整形を利用する場合は次の様に指定します。


$CGI::Pretty::INDENT = $CGI::Pretty::LINEBREAK = "";




プリティ



英単語で「 pretty 」と聞くと、「 かわいらしい 」というイメージを持ってしまいまいしたが、実際には様々な「 良い 」という意味を持っていて、その中に「 きれいにする 」という意味を持っていることを知りました。

他には「 とても 」や「 巧み 」「 上手い 」といった意味もあるそうです。


0xf3 -> 0xf4 へ



次回より、HTML フォームの作成方法を確認します。


参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index

















同じカテゴリー(Perl)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲