HTML::ShakanのconstraintsでKATAKANAとかを使う

package MyForm;
use strict;
use warnings;
use HTML::Shakan::Declare;
use FormValidator::Lite::Constraint::Japanese;

form 'add' => (
	TextField(
		name => 'katakana',
		constraints => [ 'KATAKANA' ],
	),
	TextField(
		name => 'hiragana',
		constraints => [ 'HIRAGANA' ],
	)
);

package main;
use strict;
use warnings;
use utf8;
use CGI;
use Encode;

my $q = CGI->new;
$q->param(katakana => 'カタカナ');
$q->param(hiragana => 'ひらがな');

my $form = MyForm->get('add' => ( request =>  $q ));
if ($form->submitted_and_valid) {
	print encode('cp932', $form->render());
}
else {
	print 'not valid';
}

FormValidator::Lite::Constraint::Japaneseをuseするだけ。

※Encodeは試したのがコマンドプロンプトだったから。