I've now submitted a patch to T.J. Mather for HTML::FillInForm which overhauls the interface and docs to be simpler.
It boils down to two things:
1. You can skip the call to new().
2. You no longer have to declare what format your HTML or data is in, the module just figures it out. Gone are the days of trying to remember whether you needed "fdat" or "fdata", "fobj" or "fobject", "scalaref" or "scalarref"... you don't need any of them!
In summary, this:
my $fif = HTML::FillInForm->new;
$fif->fill( scalarref => \$html, fdat => \%data );
HTML::FillInForm->fill( \$html, \%data );
All the original syntax remains supported for backwards compatibility.
I'll try post another update once the final release happens.