めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

HTML::FillInForm

HTML::FillInFormの使い方がイマイチわからないよ、と思っていたんです。
でも、ちょっとわかったので、ソース(最近こんな感じばかり)
テンプレートのHTML(index.html)

<table cellspacing="0" cellpadding="0" border="1">
	<tr valign="">
		<td>名前</td>
		<td><input type="text" name="name" value=""></td>
	</tr>
	<tr valign="">
		<td>サブジェクト</td>
		<td><input type="text" name="subject" value=""></td>
	</tr>
</table>

スクリプト


#!/usr/local/bin/perl
use strict;
use CGI;

use HTML::FillInForm;
use HTML::Template;

#1 CGI.pmを使用する
my $cgi = CGI->new;
$cgi->param( "name", "John Smith" );
$cgi->param( "subject", "題名" );

#2 HTMLを読み込む
my $template = HTML::Template->new( filename => './index.html' );
my $html = $template->output();

#3 CGI.pmの値を埋め込む
my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$html, fobject => $cgi);


出力結果

<table cellspacing="0" cellpadding="0" border="1">
	<tr valign="">
		<td>名前</td>
		<td><input value="John Smith" name="name" type="text"></td>

	</tr>
	<tr valign="">
		<td>サブジェクト</td>
		<td><input value="題名" name="subject" type="text"></td>
	</tr>
</table>

という感じで。なるほどなあ。でね、ここでいくつかあったのは

  • HTML::Parserを必ず使う
  • Template::Toolでも使えた
  • 他にもいろいろ機能があるらしい

というわけで、CGI.pmとの組み合わせを行うとすると、CGI.pmについて知りたいな、という考えが..。