--- SOAP-Lite/lib/SOAP/Lite.pm (.../tags/CPANInternal-97) (revision 22689) +++ SOAP-Lite/lib/SOAP/Lite.pm (.../trunk) (revision 22689) @@ -493,6 +493,7 @@ # ====================================================================== package SOAP::Transport; +use Class::Inspector; use vars qw($AUTOLOAD @ISA); @@ -521,7 +522,7 @@ (my $protocol_class = "${class}::$protocol") =~ s/-/_/g; no strict 'refs'; - unless (defined %{"$protocol_class\::Client::"} && UNIVERSAL::can("$protocol_class\::Client" => 'new')) { + unless (Class::Inspector->loaded("$protocol_class\::Client::") && UNIVERSAL::can("$protocol_class\::Client" => 'new')) { eval "require $protocol_class"; die "Unsupported protocol '$protocol'\n" if $@ =~ m!^Can\'t locate SOAP/Transport/!; die if $@; @@ -2497,7 +2498,7 @@ # 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: - unless (defined(%{"${class}::"}) || exists($INC{join '/', split /::/, $class.'.pm'})) { + unless (($class eq 'main') || $class->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 && m![/\\.]!} $self->dispatch_to); eval 'local $^W; ' . "require $class";