Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1637 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  aide sur script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide sur script

n°599626
yannvi
Posté le 30-12-2003 à 22:50:58  profilanswer
 

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  

mood
Publicité
Posté le 30-12-2003 à 22:50:58  profilanswer
 

n°599659
burgergold
5$? va chez l'diable!
Posté le 31-12-2003 à 02:02:47  profilanswer
 

deja tu veux le mettre entre balise C/C++ et l'aligné comme il faut?

n°599740
Aricoh
gentil mais fo po pousser
Posté le 31-12-2003 à 11:20:23  profilanswer
 

yannvi a écrit :


J espere ne pas etre trop confus


 
heu  :pt1cable: si je te dis que tu es trop confus, tu l'prendras po mal hein ? :heink:  :whistle:  
 
Comme dit Burgergold, édite ton message et place ton extrait de code Perl entre balises C/C++ parce que là, c'est pas évident à capter


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°599780
yannvi
Posté le 31-12-2003 à 12:19:04  profilanswer
 

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

n°599782
yannvi
Posté le 31-12-2003 à 12:19:54  profilanswer
 

remplacer le smiley pas  ":/"

n°599783
Aricoh
gentil mais fo po pousser
Posté le 31-12-2003 à 12:22:11  profilanswer
 

yannvi a écrit :

remplacer le smiley pas  ":/"


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 nettement NETTEMENT plus clair pour nos pôvres neu-noeils à nous zotres  :D  ;)


Message édité par Aricoh le 31-12-2003 à 12:22:42

---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°599867
yannvi
Posté le 31-12-2003 à 13:55:03  profilanswer
 

Code :
  1. SWITCH:
  2.     {
  3.       if ($curlin =~ /^dn: uid/) { $lname=(split(/:/,$curlin))[1];
  4.                               $lname=~ s/^\s+//;
  5.                               $lname=(split(/,/,$lname))[0];
  6.                               last SWITCH; };
  7.       if ($curlin =~ /^changetype: delete/ ) { $type=(split(/:/,$curlin))[1];
  8.                              $ok=1;last SWITCH; };
  9. # Si Ajout d un utilisateur ou modification   
  10.      
  11. if ($curlin =~ /^(changetype: modify)/ && $lname =~ /uid/ ) { $type=(split(/:/,$curlin))[1];last SWITCH;};
  12. if ($curlin =~ /^replace: /) { $qq=(split(/:/,$curlin))[1]; last SWITCH; };
  13.   if (($curlin =~ /^$qq/i) && ($qq !~ /^( modif)/) ){ $val=(split(/:/,$curlin))[1];$ok=2;last SWITCH;};
  14.        
  15.        $nothing=1;
  16.        }

n°599874
burgergold
5$? va chez l'diable!
Posté le 31-12-2003 à 14:10:50  profilanswer
 

bon maintenant aligne le :D

n°599900
burgergold
5$? va chez l'diable!
Posté le 31-12-2003 à 15:17:43  profilanswer
 

Code :
  1. SWITCH: {
  2.    if ($curlin =~ /^dn: uid/) {
  3.       $lname=(split(/:/,$curlin))[1];
  4.       $lname=~ s/^\s+//;  
  5.       $lname=(split(/,/,$lname))[0];
  6.       last SWITCH;
  7.    }
  8.    if ($curlin =~ /^changetype: delete/ ) {
  9.       $type=(split /:/,$curlin))[1];
  10.       ok=1;
  11.       last SWITCH;
  12.    }
  13.    # Si Ajout d un utilisateur ou modification     
  14.    if ($curlin =~ /^(changetype: modify)/ && $lname =~ /uid/ ) {
  15.       $type=(split(/:/,$curlin))[1];
  16.       last SWITCH;
  17.    }
  18.    if ($curlin =~ /^replace: /) {
  19.       $qq=(split(/:/,$curlin))[1];
  20.       last SWITCH;
  21.    }
  22.    if (($curlin =~ /^$qq/i) && ($qq !~ /^( modif)/) ) {
  23.       $val=(split(/:/,$curlin))[1];
  24.       $ok=2;
  25.       last SWITCH;
  26.    };
  27.    $nothing=1;
  28. }


 
ca je considère ca comme du code bien aligné
 
les ; après les if jai personnelement javais vu ca
tu utilise bien "my" lorsque tu créé une variable? (use strict; en début de script)


Message édité par burgergold le 31-12-2003 à 15:18:54
n°600229
pospos
Posté le 01-01-2004 à 14:09:37  profilanswer
 

c'est un peu confu comme truc
 
deja si tu fait des elsif ca t'evitera de faire un last SWITCH à chaque fois (en mettant le $nothing = 1 dans un dernier else)
 


Message édité par pospos le 01-01-2004 à 14:12:18
mood
Publicité
Posté le 01-01-2004 à 14:09:37  profilanswer
 

n°600299
burgergold
5$? va chez l'diable!
Posté le 01-01-2004 à 17:25:54  profilanswer
 

pospos a écrit :

c'est un peu confu comme truc
 
deja si tu fait des elsif ca t'evitera de faire un last SWITCH à chaque fois (en mettant le $nothing = 1 dans un dernier else)
 
 


 
bah c comme ca que ca marche le switch en perl :/

n°600325
pospos
Posté le 01-01-2004 à 18:33:39  profilanswer
 

c'est pas à toi que je disais ca Burgergold!
 
mais dans ce cas un if{}elsif{}...}else{} serait plus approprié
 
pour le switch, ya le fameux Switch.pm de Conway qui est intégré aux distibs d'ActivePerl et qui est vraiment bien:
http://search.cpan.org/~dconway/Switch-2.09/Switch.pm

n°600333
burgergold
5$? va chez l'diable!
Posté le 01-01-2004 à 18:57:34  profilanswer
 

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

n°600339
pospos
Posté le 01-01-2004 à 19:04:36  profilanswer
 

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 :
  1. for ($variable_a_la_con_de_pute_de_sa_mere) {
  2.   if (/tralala/) {
  3.      print "c'est la fete";
  4.   }
  5.   elsif (/blanc sur rouge/) {
  6.     print "rien ne bouge";
  7.   }
  8.   else {
  9.     print "comprend pas!";
  10.   }
  11. }


 
mais de toutes facons le Swtich de Damien conway est beaucoup plus puissant!

n°600344
burgergold
5$? va chez l'diable!
Posté le 01-01-2004 à 19:15:55  profilanswer
 

switch de damien vient avec la version unix de perl dans le kit de librairie de base?

n°600390
pospos
Posté le 01-01-2004 à 21:16:37  profilanswer
 

je sais pas trop
il necessite Filter::Simple, quie st inclus à partir de perl 5.8 il me semble
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  aide sur script

 

Sujets relatifs
[Bash] : aide sur un script svp, boucle for pour /mnt/path/*[JS] - Débutant - Besoin d'aide pour un script ...
- Aide pour script regexp - Aide pour mon script php, je pige pas pkoi il marche pas
Aide pour la création d'un script[Règlé]un peu d'aide pour un script php
une ptite aide pour un script sur une page HTML !!! SVP facile[JS] Petite modif de script... Aide please...
[php] a l aide script de d identificationAide pour script vbs !!!!!!!
Plus de sujets relatifs à : aide sur script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR