[PERL] faire une condition plus compacte
Bonjour à tous,
J'ai le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
$C=$cgi->param("C");
$A=$cgi->param("A");
$P=$cgi->param("P");
$O=$cgi->param("O");
$S=$cgi->param("S");
$G=$cgi->param("G");
$OU1=$cgi->param("OU1");
$OU2=$cgi->param("OU2");
$OU3=$cgi->param("OU3");
$OU4=$cgi->param("OU4");
$FREEFORM=$cgi->param("FREEFORM");
if($C eq '' && $A eq '' && ....... && $OU4 eq ''
{
print "addresse inexistante";
}
else
{
print "addresse";
} |
Comment changer ma condition if() par quelque chose de plus compacte ???
Merci pour vos réponses.
Re: [PERL] faire une condition plus compacte
Il y a plus d'une façon de le faire ;)
Plus lisible (et logique quant à la priorité des opérateurs) :
Code:
if (($C eq '') and ($A eq '') and ....... and ($OU4 eq ''))
Plus compact, simplement par concaténation de toutes les chaînes :
Code:
if ($C.$A. ......... .$OU4 eq '')
Plus tableau/Reg-Exp :
Code:
1 2
| @tab = ($C, $A, ............ , $OU4);
if (not grep { $_ != /^$/ }, @tab) |
Plus logique, si $cgi->param venait à répondre "undef" si le paramètre n'était pas utilisé (je ne sais pas ce que retourne ->param, alors je conjecture ;)) :
Code:
if (not (defined ($C) and defined($A) and ....... and defined($OU4)))
Et il y a encore d'autres possibilités.
La compacité n'est pas nécessairement un critère valide. La logique de ton test est prépondérante ... Et l'usage de conditions intermédiaires peut aider, dans ce domaine ...