めも帖

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

HTML::FillInForm(4)

HTML::FillInFormを触っていて、「あれバグ?」というのがありました。
以下、そのときのソースです。
index.htmlをHTML::Templatesで表示しています。

HTML(index.html)

<table cellspacing="0" cellpadding="0" border="1">
	<tr valign="top">
		<td>ラジオボタン</td>
		<td>
			<input type="radio" name="media" value="0">ラジオ
			<input type="radio" name="media" value="1">テレビ
			<input type="radio" name="media" value="2">新聞
			<input type="radio" name="media" value="3">映画
		</td>
	</tr>
	<tr valign="top">
		<td>チェックボックス</td>
		<td>
			<input type="checkbox" name="news" value="0">朝
			<input type="checkbox" name="news" value="1">昼
			<input type="checkbox" name="news" value="2">夜
		</td>
	</tr>
</table>

index.cgi

#!/usr/local/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

use lib qw(../../extlib);
use HTML::FillInForm;
use HTML::Template;

print "Content-type: text/html\n\n";

#1 CGI.pmを使用する
my $cgi = CGI->new;
   $cgi->param( "media",   "0","2" );
   $cgi->param( "news",    "0","2" );

#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);

print $output;

その実行結果が、以下のとおりです。ポイントのみ抜粋。

<table cellspacing="0" cellpadding="0" border="1">
	<tr valign="top">
		<td>ラジオボタン</td>
		<td>

			<input value="0" name="media" type="radio">ラジオ
			<input value="1" name="media" type="radio">テレビ
			<input value="2" name="media" type="radio">新聞
			<input value="3" name="media" type="radio">映画
		</td>
	</tr>
	<tr valign="top">
		<td>チェックボックス</td>
		<td>
			<input checked="checked" value="0" name="news" type="checkbox">朝
			<input value="1" name="news" type="checkbox">昼
			<input checked="checked" value="2" name="news" type="checkbox">夜
		</td>

	</tr>
</table>

ちょっと、わかりにくいのですが、ラジオボタンに0という値を設定しているテンプレートに、HTML::FillInForm(1.05)を使用して0という値を埋め込むと、checkしてくれないのです。けれど、チェックボックスや、プルダウン(select)は、きちんと選択(checked、selected)してくれるのです。「これって、バグ?」と思ったりするのですが、そもそも、ラジオボタンに0という値を設定していいのか?という疑問もあります。こいうのは、誰に言えばいいのかなあ〜、と実家で思ったんですが、わからず、ここにめもを残すのでした。

関連