vebram has asked for the wisdom of the Perl Monks concerning the following question:

hi I have a module:
package policy; sub checkPolicyPrice { my $policyCode = shift; my $date = shift; my $result = 159 if $policyCode =~ /ABC/ && $date =~ /31\/10\/2007/; ### NO MATCH FOUND print "No value found for:policyCode=$policyCode date=$date" unles +s defined $result; return $result; }
and I have a requestor .pl file:
#!/usr/bin/perl -w # test-policy.pl use SOAP::Lite; print "what is your policyCode?"; $policyCode = <stdin>; chomp $policyCode; print "what is your date?"; $date = <stdin>; chomp $date; print SOAP::Lite -> proxy('http://homepages.feis.herts.ac.uk/~123456/cgi-bin/policy.c +gi') -> uri('urn:policy') -> checkPolicyPrice($policyCode,$date) -> result;
and my cgi file is:
#!/usr/bin/perl - w # policy.cgi -policy SOAP handler use SOAP::Transport::HTTP SOAP::Transport::HTTP::CGI -> dispatch_to('policy::(?:checkPolicyPrice)') -> handle ;
But when I run the .pl file the server gives me this reply:
$ perl test-policy.pl what is your policyCode?ABC what is your date?31/10/2007 500 Internal Server Error at test-policy.pl line 10
Can someone please tell where my mistake is. I cannot decide if I have a problem with the code in the .pl file or if is the cgi file or how I have called it. thanks in advance. vebram

Replies are listed 'Best First'.
Re: Testing .pl, .pm, .cgi work together
by leocharre (Priest) on Oct 31, 2007 at 14:33 UTC

    line 10 is the soap thing, right? I don't know about SOAP. But, I know a little bit about debugging.

    And turn on SOAP::Lite debug mode.. there might be one.. use SOAP::Lite +trace; ?

    Looks like you have chained method/class calls. Maybe you can break it up... instead of

    print SOAP::Lite -> proxy('http://homepages.feis.herts.ac.uk/~123456/cgi-bin/policy.c +gi') -> uri('urn:policy') -> checkPolicyPrice($policyCode,$date) -> result;
    Something like
    use Carp; my $s = new SOAP::Lite +trace; # not sure if this goes on the use stat +ement or the optional constructor method $s->proxy('http://homepages.feis.herts.ac.uk/~123456/cgi-bin/policy.c +gi') or confess; $s-> uri('urn:policy') or confess; $s-> checkPolicyPrice($policyCode,$date) or confess; my $output = $s-> result or confess; print $output;

    That may help track down the problem.