On Oct 5, 2011, at 21:05 , Boyd Duffee wrote:

> Nigel Horne wrote:
>> On 5 Oct 2011, at 14:50, Boyd Duffee wrote:
>>> Hi there,
>>> 
>>> I'm writing a module SRU::Client and like a good boy, I wrote a test script 
>>> (using Test::More).  I couldn't figure out why the test script would run on 
>>> one machine, but not on another, until I found that the machine it wouldn't 
>>> run on had the HTTP_PROXY set.  When I unset that variable in the shell, 
>>> the script works, but I cannot for the life of me unset HTTP_PROXY in the 
>>> script itself.
>>> 
>>> Things that don't work:
>>> undef $ENV{HTTP_PROXY}
>> Try:
>> delete $ENV{HTTP_PROXY};
> 
> I did.  No joy.
> 
> perl -MLWP::Simple -e 'delete $ENV{HTTP_PROXY}; print 
> get("http://www.google.co.uk";)'
> 
> doesn't work, but
> 
> unset HTTP_PROXY; perl -MLWP::Simple -e 'print get("http://www.google.co.uk";)'
> 
> does work.

Your problem is that LWP::Simple calls $ua->env_proxy when it loads.  The 
-MLWP::Simple make perl load the module before the -e code runs.  You need to 
arrange for the environment variable to be deleted before that.  Deleting it in 
a BEGIN block is probably the way to go.  For instance like this:

   perl -e 'BEGIN{ delete $ENV{HTTP_PROXY} }; use LWP::Simple; print 
get("http://www.google.co.uk";)'

--Gisle

Reply via email to