HTML::FormTemplate genera la salida, que puedes capturar y añadirle luego el javascript que quieras. O con HTML::EasyTags, como viene en la sinopsis del primer módulo.
Pero lo que dices de validar, no lo entiendo. El propio módulo HTML::FormTemplate tiene sus rutinas para validar entradas. Repasa la sección "Overview" del módulo.