めも帖

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

HTML::FillInForm(2)

というわけで、前日に色々と解けてきたHTML::FillInFormなんですが、大体にして困るのは、セレクト、ラジオボタン、そしてチェックボックス、です。で、それも試してみました。

HTML(index.html)

<table cellspacing="0" cellpadding="0" border="1">
	<tr valign="top">
		<td>名前</td>
		<td><input type="text" name="name" value=""></td>
	</tr>
	<tr valign="top">
		<td>サブジェクト</td>
		<td><input type="text" name="subject" value=""></td>
	</tr>
	<tr valign="top">
		<td>ラジオボタン</td>
		<td>
			<input type="radio" name="media" value="ラジオ">ラジオ
			<input type="radio" name="media" value="テレビ">テレビ
			<input type="radio" name="media" value="新聞">新聞
			<input type="radio" name="media" value="映画">映画
		</td>
	</tr>
	<tr valign="top">
		<td>チェックボックス</td>
		<td>
			<input type="checkbox" name="news" value="朝">朝
			<input type="checkbox" name="news" value="昼">昼
			<input type="checkbox" name="news" value="夜">夜
		</td>
	</tr>
	<tr valign="top">
		<td>都道府県</td>
		<td>
			<select name="address">
				<option value="">未選択</option>
				<option value="北海道">北海道</option>
				<option value="東京都">東京都</option>
			</select>
		</td>
	</tr>
</table>

スクリプト


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

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

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

#1 CGI.pmを使用する
my $cgi = CGI->new;
$cgi->param( "name", "John Smith" );
$cgi->param( "subject", "題名" );
$cgi->param( "media", "テレビ" );
$cgi->param( "news", "夜","朝" );
$cgi->param( "address", "北海道" );

#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="John Smith" name="name" type="text"></td>

	</tr>
	<tr valign="top">
		<td>サブジェクト</td>
		<td><input value="題名" name="subject" type="text"></td>
	</tr>
	<tr valign="top">
		<td>ラジオボタン</td>
		<td>

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

	</tr>
	<tr valign="top">
		<td>都道府県</td>
		<td>
			<select name="address">
				<option value="">未選択</option>
				<option value="北海道" selected="selected">北海道</option>

				<option value="東京都">東京都</option>
			</select>
		</td>
	</tr>
</table>

となると。いい感じですよ!これが欲しかった。ワタシ、とても欲しかった。