I've put together a new perl module on CPAN called Yote. It directly and automatically binds javascript client objects to perl server objects. The objects are container objects that live in an object database. The objects are lazily loaded as needed and are automatically stored with their contents automatically. The following example works out of the box as long as the Hello package is in the Yote server's perl classpath. The hello count will be preserved in Yote's data store.

Server Side Perl
package Hello;
use base 'Yote::AppRoot';

sub hello {
my( $self, $input ) = @_;
$self->set_hello_count( $self->get_hello_count( 0 ) + 1 );
return "Hello $input, I have said hello ".
$self->get_hello_count() . " times";
}

1;

Client Side Javascript

$.yote.init();

var hello_app = $.yote.fetch_app( 'Hello' );

alert( hello_app.hello( prompt( "What is your name?" ) ) );