http://www.perlmonks.org?node_id=109658

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

I'm having trouble with reading command line params. I wanna have a switch "-p", if there's an argument an LWP::UserAgent's proxy is set to that, if there's the switch and no argument the proxy is got from the environment variables, and if there's no switch, no proxy. I got this code to do it:
use strict; use warnings; use Getopt::Std; use LWP::UserAgent; our($opt_p); getopt('p'); my $agent = LWP::UserAgent->new(); ($opt_p == 1 ? $agent->env_proxy() : $agent->proxy(http => $opt_p)) if + (defined($opt_p));
But it gives the warning "Argument "x" isn't numeric in numeric eq (==)". Now, obviously this is the fault of $opt_p == 1. That's there because if the switch has no argument, $opt_p is 1. But doesn't that expression return 0 anyway if the argument is a string? And if it does, why isn't the proxy getting set when I run it in debug mode with params?
--
sub version { print "I cuss your capitalist pig tendencies bad!"; }