|Keep It Simple, Stupid|
normally, if your browser sends an HTTP request, it will load the page it gets as a response into the browser, replacing the current page. you can get around this by having your perl script send back non-parsed headers. (see the documentation for the CGI module for info on how to do that). the other option is the hidden frame trick mentioned earlier.
ie, you'd probably have something similar to:
<input type="text" name="foo" onblur="updateField("foo",this.value)" />
this is all off the top of my head, so there are probably some things i forgot. obviously, you would also need to pass along something akin to the primary key for the record so the script knows which one to update. plus you'd have to be careful to url encode everything you pass in the url, etc, etc.
all in all, the benefit probably isn't worth the work it would take to get it all to work.
anders pearson // digital samurai personal/pgp // http://www.columbia.edu/~anders/ weblog // http://thraxil.dhs.org