in reply to Calling a sub-routine in CGI

This is the source I'm using, the sub routines work if I call them explicitly, but I wan't to call them from a link on the same page
#!perl.exe -wT use Strict; use CGI; my $q = new CGI; print $q->header("text/html"); print <<WEB_PAGE; <HTML> <HEAD> <TITLE>Help ME</TITLE> </HEAD> <H1> Just a simple page for now </H1> WEB_PAGE my ($device, $port, $house, $unit, $interface); # Use BEGIN so we can conditionally eval modules BEGIN { # Set the parameters $interface = 'CM11'; $port = 'COM1'; $house = 'A'; $unit = '2'; use Win32::SerialPort 0.17; die "$@\n" if ($@); $device = Win32::SerialPort->new ($port) or die "Can't start $port +\n"; eval "use ControlX10::CM11 qw( :FUNC 2.06 )"; die "$@\n" if ($@); } $BASE_URL = '/cgi-bin/lights.cgi'; print "Turn light <a href='$BASE_URL?action=toggle_on'>ON</a>"; # &toggle_on; # &toggle_off; sub toggle_on{ my $cmd = 'J'; print"<h2>Turning Lights ON</H2>"; print "---> Toggle light $house$unit to on \($cmd\)\n"; send_cm11($device, $house . $unit); send_cm11($device, $house . $cmd); } sub toggle_off{ my $cmd = 'K'; print"<h2>Turning Lights OFF</H2>"; print "---> Toggle light $house$unit to on \($cmd\)\n"; send_cm11($device, $house . $unit); send_cm11($device, $house . $cmd); }