Hello David,
First of all, thank you very much for taking the effort to help me solve the
problem. Sorry for the delay in my reply.
> please do not top post. when you reply to any message, post
> your respond
> below the relevant text.
>
Sorry about this. Will make sure I do this future.
> like i say before, your working version and failing version
> is absolutely
> identifical. there is no reason for the failing version to
> fail if the
> working vesion really works.
>
There is a difference. I modifed the original code in order to make sure I
did not break any confidentiality agreement. Let me try to explain again. I
have an xml file that contains a list of URLs. I read these URLs into a
hash and pass them as a parameter into the function that does LWP get. The
code (again abridged) looks like:
$config = XMLin( "config.xml", VarAttr => 'name',
ContentKey => '-content' );
foreach my $keys ( keys %{$config} ) {
foreach (sort keys %{$config->{$keys}} ) {
my $url = $config->{$keys}{$_}; #$url = "http://server:port";
my $retval = testURL( $url );
}
}
sub testURL {
my $url = $_[0];
my $ua = LWP::UserAgent->new( agent => 'Mozilla/1.0',
timeout => 30,
);
my $request = HTTP::Request->new('GET', $url);
my $response = $ua->send_request($request);
my $content = $response->content();
if ( $response->is_success ) {
print $response->content();
else {
print "Failed to get $url\n";
}
}
__END__
#config.xml
<HOSTS>
<URL_1>http://vasrv1:80</URL_1>
<URL_2>http://vasrv2:80</URL_2>
<URL_3>http://vasrv3:80</URL_3>
<URL_4>http://vasrv4:80<URL_4>
</HOSTS>
As already mentioned, in the code above if I substituted the line
my $url = $config->{$keys}{$_};
with,
my $url = "http://server:port";
the function call works just fine. If I use the former statement, I receive
a 501 error. I know it's bizzare sice the value contained in the URL (to my
naked eye) is essentially the same. I believe this might've something to do
with converting the XML file to a hash, although I still cannot quite figure
it out.
> your best bet is to use the Perl debugger to step through
> your script and
> make sure the variables are getting the values you expected.
> for example,
> assume your script is named net.pl, you can involve the debugger with:
>
> [panda]# perl -d net.pl
>
> and then keep hitting 's<RETURN>' until the debugger is at:
>
> main::(net.pl:9): my $url = $config->{URL_1};
>
> hitting 's<RETURN>' one more time so this line is executed.
> and then type:
>
> print "$url\n";
>
> to see what's the real value of $url. make sure $url has
> exactly what you
> expect. since your script is so simple, you can also put a
> single print
> statement after the assignment to $url and confirm it's
> getting the right
> value. i suggest you learn to use the debugger:
>
> man perldebug
>
> david
Thanks again. I use Open PERL IDE under Windows, and I feel it's got a
extremely good UI debugger. The value I see for $url after the statement in
question is the same in both cases. I still need to try Rob's suggestion to
see the length of the value in both cases, but like I said I feel the
problem originates when I read the XML file into a hash.
> --
> sub'_{print"@_ ";* \ = * __ ,\ & \}
> sub'__{print"@_ ";* \ = * ___ ,\ & \}
> sub'___{print"@_ ";* \ = * ____ ,\ & \}
> sub'____{print"@_,\n"}&{_+Just}(another)->(Perl)->(Hacker)
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>
>
>
Thanks again,
Rajesh