The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl -w
use strict;
use CGI::Ajax 0.57;
use CGI;

my $q = new CGI;  # need a new CGI object

# compose our list of functions to export to js
my %hash = ( 'myFunc'         => \&perl_func,);

my $pjx = CGI::Ajax->new( %hash ); # this is our CGI::Ajax object

$pjx->DEBUG(1);   # turn on debugging
$pjx->JSDEBUG(1); # turn on javascript debugging, which will place a
                  #  new div element at the bottom of our page showing
                  #  the asynchrously requested URL

print $pjx->build_html( $q, \&Show_HTML ); # this builds our html
                                           #  page, inserting js

# This subroutine is responsible for outputting the HTML of the web
# page. 
sub Show_HTML {
  my $html = <<EOT;
<HTML>
<HEAD><title>Radio Example</title>
</HEAD>
<BODY>
<form>
<DIV id="radiobuttons" onclick="myFunc( ['radio1'], ['result'] );"> 
<input TYPE="radio" ID="radio1" NAME="radio1" VALUE="red">red 
<input TYPE="radio" ID="radio1" NAME="radio1" VALUE="blue">blue 
<input TYPE="radio" ID="radio1" NAME="radio1" VALUE="yellow">yellow 
<input TYPE="radio" ID="radio1" NAME="radio1" VALUE="green">green 
</DIV> 
<div id='result'> </div>
</form>
</BODY>
</HTML>
EOT

  return($html);
}

# this is the exported function 
sub perl_func {
  $a = shift;
  return $a . " was selected"; 
}