トップ>Perl&CGI>基本編目次>INCMプラグインで覚えるPerl講座4

INCMプラグインで覚えるPerl講座

第4回 書き込み用定義とCMTヘッダ

今回はCMTヘッダと書き込みの為の定義の話です。

CMTヘッダの出力

32行目から34行目まで

print &gettitle,					# CMTヘッダ出力
	  '#P:POST,$c,i0=1&s1=$N&s2=$E&s3=$T&s11=$M&s4=$H&s5=$K',"\n",
	  '#F:POST,$c,i0=1&i5=$Sr&s1=$N&s2=$E&s3=$T&s11=$M&s4=$H&s5=$K',"\n";

これはCMTヘッダと書き込み時に必要な情報をCMTファイルに書き込んでいます。

print &gettitle,

print」は与えられた引数を出力します。

例
print '123'; #出力:123
$abc='123'; print $abc; #出力:123
$abc='123'; print "\$abc=$abc"; #出力:$abc=123

どこに出力するかというと、デフォルトでは標準出力(STDOUT)になります。 INCMで言えば巡回ウィンドウの「Page 1:*..*....」等です。 しかし、上に書いたようにこのプラグインではCMTファイルに出力してます。 「print」で出力先を指定する場合、

print CMT '***';
print STDOUT '***';

のように書きます。 「CMT」「STDOUT」というのはファイルハンドルと呼ばれるものです。 ファイルハンドルはそのファイルを開いた時に付けられた名前になります。 このプラグインでは「CMLIB15」内のサブルーチンを呼出して開いています。 その時にCMTファイルは「CMT」、ログファイルは「LOG」と名付けられてます。 ちなみに掲示板などにアクセスする時も「HTTP」というのが「CMLIB15」によって 名付けられています。 通常は「print '***';」とすると、「STDOUT」に出力されます。 これを変えるには

select(CMT);

とすると出来るんですが、これも「CMLIB15」内で実行されてます。 そうするとプラグイン内で「print '***';」とすれば、CMTファイルに出力される ようになるというわけです。

次にprintで出力してるものですが。

&gettitle,

となってますね。 「gettitle」というサブルーチンを呼出してます。 ここでは、そのサブルーチンが返してきた内容を出力しています。 「gettitle」は掲示板のタイトルタグを解析して掲示板のタイトルを取得し、 CMTヘッダの形式にして呼出し元へ返します。 ここの掲示板(仮)を例にすると

#T:プリンと遊ぼーど(シンプル)
#N:0
#U:0
#B:0

となりますが、サブルーチンがやってくれるので良く分からなくても大丈夫です。

&gettitle,

を見るとサブルーチン名の後ろに「,」がありますが、これが「;」でないのは 次の行も「print」の出力対象だからです。

print 'abc','def';

とすると、

abcdef

というのが出力されます。プラグインのは見た目が複雑なだけで、やってることはそんな感じです。

書き込み用の定義

次に出力してるのは、

	  '#P:POST,$c,i0=1&s1=$N&s2=$E&s3=$T&s11=$M&s4=$H&s5=$K',"\n",
	  '#F:POST,$c,i0=1&i5=$Sr&s1=$N&s2=$E&s3=$T&s11=$M&s4=$H&s5=$K',"\n";

ですが、これは書き込みの時に利用される情報です。
#P:」は、新規書き込み時に共通で使われる設定、
#F:」は、返信書き込み時に共通で使われる設定です。
POST」はリクエストメソッドで、通常はこのままで平気です。
$c」は書き込みの内容を送るCGIの指定で、
$C」が、読み込み時に使ってるのと同じURL、
$c」が、巡回設定の書き込み先アドレスに書かれたURLを意味します。

次の「i0=1〜$K」までは、CGIに送る引数です。 掲示板のフォーム部分のHTMLソースを見ると

<input type=text size=20 name="name" value="">

といったようなものがあると思います。 name=で設定されてるのが引数の名前です。 このプラグインで見ると「i0=1」の場合はたぶん、

<input type=hidden name="i0" value="1">

のようにHTMLソースではなっていたと考えられます。 「value」が「1」で固定だと考えて、INCMでも「i0=1」で送信する設定に しているのだろうと思います。

題名の場合は、

<input type=text size=20 name="title" value="">

とあれば、「title=$T」とします。

$T」というのは特殊なもので、INCMが書き込み時に自動的に展開してくれるものです。他に良く使われるものとして、

    $N   フォルダオプションに設定されている名前(NAME)
    $E   e-mailアドレス(EMAIL)
    $K   キー(KEY)
    $H   ホームページ(HP)
    $T   ユーザによって入力されたタイトル(エディタで入力)
    $M   ユーザによって入力されたメッセージ(エディタで入力)
    $Sn  記事番号
    $Sr  返信先記事番号

などがあります。

プラグインのソースに戻って、最後の

"\n"

は改行をしています。 基本的には「i0=1〜$K」の部分を書き換えればいいはずです。

今回はここまでとします。 次回はようやく記事の取得部分に入っていきます。

キーワード

Prev : Next


トップ>Perl&CGI>基本編目次>INCMプラグインで覚えるPerl講座4

©Copyright 2002 GETWILD'74 All Rights Reserved
E-Mail:getwild@mail.wind.ne.jp