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


in reply to How Much Is Too Much (on one line of code)?

How about

my $country = uc $card->country || ''; # make sure it is UC and define +d $country = '' if $country eq 'GBR'; # blat the Brits

Same caveat about hard coded GBR still applies. It is still brief but I think the logic is clearer so divided. I am aware that will kill $country == 0 but as you are checking for gbr I suspect you do not have numeric countries

update

I missed the addition of [] around the country (sort of proves the danger of too much on one line) so my solution needs another line

$country = "[$country]" if $country;

or a re-write, I will put my thinking hat back on again !

update 2

with inspiration from perrin

my $def_country = 'GBR' my $country = uc $card->country || $def_country; # ensure UC & has a v +alue $country = $country eq 'GBR' ? '' : "[$country]" # blat brits, add [br +ackets]

Cheers,
R.

Pereant, qui ante nos nostra dixerunt!

Replies are listed 'Best First'.
Re^2: How Much Is Too Much (on one line of code)?
by Anonymous Monk on Jun 19, 2007 at 00:10 UTC
    If $card->country returns 'Gbr', then your code will set $country to '', while the original code will set it to 'Gbr'.