bonjour j ai un petit script qui va analyse les lignes d un fichier ,
et voici un extrait de ce script
SWITCH : {
if ($curlin =~ /^changetype: delete/ ) {$type=(split(/,$curlin))[1];
$ok=1;last SWITCH; };
if ($curlin =~ /^changetype && $lname =~ /uid/ ) { $type=(split(/,$curlin))[1];last SWITCH;};
if ($curlin =~ /^replace: /) { $qq=(split(/,$curlin))[1]; last SWITCH; };
if ($curlin =~ /\"$qq\") { $val=(split(/,$curlin))[1];$ok=2; last SWITCH; };
$rien=1;
}
je recupere une variable $qq et je teste si la ligne suivant contient cette variable , mais cela ne pas
une idee . J espere ne pas etre trop confus
Publicité
Posté le 30-12-2003 à 22:50:58
burgergold
5$? va chez l'diable!
Posté le 31-12-2003 à 02:02:47
deja tu veux le mettre entre balise C/C++ et l'aligné comme il faut?
Desole j avais fais un copier-coller depuis vi Il s agit d un instruction SWITCH: {
if ($curlin =~ /^dn: uid/) { $lname=(split(/,$curlin))[1];
$lname=~ s/^\s+//;
$lname=(split(/,/,$lname))[0];
last SWITCH; };
if ($curlin =~ /^changetype: delete/ ) { $type=(split(/,$curlin))[1];
$ok=1;last SWITCH; };
# Si Ajout d un utilisateur ou modification
if ($curlin =~ /^(changetype: modify)/ && $lname =~ /uid/ ) { $type=(split(/,$curlin))[1];last SWITCH;};
if ($curlin =~ /^replace: /) { $qq=(split(/,$curlin))[1]; last SWITCH; };
if (($curlin =~ /^\$qq\/i && ($qq !~ /^( modif)/) ){ $val=(split(/,$curlin))[1];$ok=2;last SWITCH;};
$nothing=1;
}
et le hic se situe la if (($curlin =~ /^\$qq\/i && ($qq !~ /^( modif)/) ) ... c plus clair ? sinon ben vais me debrouiller comme un grand .
Merci
NON ! Regarde au dessus de la zone de ton texte quand tu l'édites, tu as plusieurs boutons (G pour gras, I pour italique, etc et C/C++)
Sélectionne ton extrait de code et clique sur ce bouton C/C++, ça te mettra des balises devant et derrière ton script et ça sera nettement nettementNETTEMENT plus clair pour nos pôvres neu-noeils à nous zotres
nah je sais que c'est pas à moi que tu dis ca mais histoire de connaissance personnelle, t'est en train de te dire que le switch en perl est inutile et qu'il vaut autant mieux utiliser un if {} elsif{} ?
et le switch.pm c bien? jvais allez regarder ca
pospos
Posté le 01-01-2004 à 19:04:36
non c'est clair qu'il manque un switch en Perl, mais en tous cas un if elsif c'est toujours mieux que des if qui se suivent et font un last
l'avantage du switch c'est que tu le fait sur la meme variable pour toutes les comparaisons, et donc c'est plsu clair que de devoir la remettre dans chaque if. Une autre solution possible c'est de passer implicitement la variable dans $_, en faisant un for par exemple:
Code :
for ($variable_a_la_con_de_pute_de_sa_mere) {
if (/tralala/) {
print "c'est la fete";
}
elsif (/blanc sur rouge/) {
print "rien ne bouge";
}
else {
print "comprend pas!";
}
}
mais de toutes facons le Swtich de Damien conway est beaucoup plus puissant!
burgergold
5$? va chez l'diable!
Posté le 01-01-2004 à 19:15:55
switch de damien vient avec la version unix de perl dans le kit de librairie de base?
pospos
Posté le 01-01-2004 à 21:16:37
je sais pas trop
il necessite Filter::Simple, quie st inclus à partir de perl 5.8 il me semble