title: full working HelloWorld example for perl + SOAP + WSDL from a tarball
body: <p>I wonder if anyone can provide a full working example of a <code>SOAP 1.2</code> server (no <code>CGI</code>) + <code>SOAP 1.2</code> client with a <code>WSDL</code> file.</p>
  
  <p>Anything I try since 1 week fails.</p>
  
  <p>My last try with <code>SOAP::Transport::HTTP::Daemon</code> module give me :</p>
  
  <pre><code>SOAP::Serializer::envelope: Client Denied access to method (AnalyzeDocument) in class (main) at /usr/share/perl5/site_perl/SOAP/Lite.pm line 2806
  </code></pre>
  
  <p>I have tons of Firefox tabs open about that, but none solution works in 2012.</p>
  
  <p><code>/usr/share/perl5/site_perl/SOAP/Lite.pm</code> relevant part is </p>
  
  <pre><code># TODO - sort this mess out:
  # The task is to test whether the class in question has already been loaded.
  #
  # SOAP::Lite 0.60:
  #  unless (defined %{"${class}::"}) {
  # Patch to SOAP::Lite 0.60:
  # The following patch does not work for packages defined within a BEGIN block
  #  unless (exists($INC{join '/', split /::/, $class.'.pm'})) {
  # Combination of 0.60 and patch did not work reliably, either.
  #
  # Now we do the following: Check whether the class is main (always loaded)
  # or the class implements the method in question
  # or the package exists as file in %INC.
  #
  # This is still sort of a hack - but I don't know anything better
  # If you have some idea, please help me out...
  #
      unless (($class eq 'main') || $class-&gt;can($method_name)
          || exists($INC{join '/', split /::/, $class . '.pm'})) {
  
          # allow all for static and only specified path for dynamic bindings
          local @INC = (($static ? @INC : ()), grep {!ref &amp;&amp; m![/\\.]!} $self-&gt;dispatch_to());
          eval 'local $^W; ' . "require $class";
          die "Failed to access class ($class): $@" if $@;
          $self-&gt;dispatched($class) unless $static;
      }
  
      die "Denied access to method ($method_name) in class ($class)"
          unless $static || grep {/^$class$/} $self-&gt;dispatched;
  
      return ($class, $method_uri, $method_name);
  }
  </code></pre>