#!/usr/bin/perl use strict; use warnings; use Frontier::Client; my $number; { print "Enter a number\n"; $number = ; chomp($number); redo unless $number =~ /^\d+$/; } my $server_url = 'http://localhost/square/index.cgi/RPC2'; my $server = Frontier::Client->new(url => $server_url); my $result = $server->call('sample.square', $number); my $square = $result->{'square'}; my $difference = $result->{'difference'}; print "The square of $number is $square.\n"; #### package Square; use base 'CGI::Application'; sub setup { my ($self) = @_; $ENV{'PATH'} = ''; my @pi = split(m{/}, $self->query->path_info()); $self->start_mode(($pi[1] eq 'RPC2') ? 'RPC2' : 'view'); $self->run_modes( 'view' => 'view', 'RPC2' => 'rpc2', ); } sub view { my ($self) = @_; my $number = $self->query->param('number'); my $template = $self->load_tmpl('view'); $template->param(NUMBER => $number, SQUARE => square($number)->{square}, ); return $template->output; } sub rpc2 { my ($self) = @_; require Frontier::RPC2; my $rpc = Frontier::RPC2->new(); my $response = $rpc->serve($self->query->param('POSTDATA'), { 'sample.square' => \&square, }, ); $self->header_props( -type => 'text/xml', charset => 'UTF-8', ); return $response; } sub square { my ($x) = @_; return {square => ($x ** 2)}; } 1; #### #!/usr/bin/perl -T use warnings; use strict; use lib '.'; use Square; my $square = Square->new(); $square->run(); #### Square Two Numbers

Square Two Numbers

Enter a number:

The square of is .