My approach is to first build a static site that works without Javascript. After I've hammered out the functionality with HTML+Perl, I then use jQuery to add more interactivity. Usually this means using the jQuery $.ajax() function to request a page from the server and to rip out specific parts of the HTML and to insert that part into the current page. If you want to dynamically update a data display, you will likely need to supply that data (preferrably in JSON format) to jQuery.
You need to realize that to have a HTML/Javascript button execute some Perl code, you will need to make a request from the browser to your server. There is no convenient way (that I'm aware off) to interweave Perl and Javascript to make the RPC transparent. But I think you can get by without that transparency quite well if you use the approach of first creating a functional, non-JS version and then add the "no page reload" functionality on the client side.