[PERL] Pb de débutant

Fermé
Ju - 7 déc. 2006 à 15:04
 Ju - 7 déc. 2006 à 18:54
Bonjour

Savez-vous comment dire que SI $i est compris entre 5 et 76 alors on fait un traitement, j'ai fais le code suivant mais ça ne marche pas...

FOR ($i=0;$i<500;$i++){
  if($i =~ /[5-76]/){
         .
         .
         .
  }
}



Merci par avance

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
7 déc. 2006 à 15:27
Bonjour,

Je ne connais pas la syntaxe de perl, mais ce que tu utilises, là, c'est une expression rationnelle : cela agit sur des chaines de caractères, pas sur des nombres !

if($i =~ /[5-76]/) signifie : "si $i est 5, 6 ou 7" (un chiffre de l'intervalle [5;7] ou le chiffre 6)

Ce que tu cherches, c'est plutôt quelque chose dans le genre de
if ($i>=5 && $i<=76)
Xavier
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 déc. 2006 à 15:32
Salut,

cela agit sur des chaines de caractères, pas sur des nombres !

Oui, aussi sur les nombres.
On peut travailler dans un intervalle en utilisant des regex
On peut resoudre d'équations en utilisant des regex
On peut tester les nombres en utilisant les regex

(par exemple une regex pour vérifier si un numéro est en virgule flottante)
/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 déc. 2006 à 15:27
Salut,

il y a plusieurs façon de le faire, voilà 2 façons de le faire
for($i=0;$i<500;$i++){
  if( grep { $i } 5..76 ){
         .
         .
         .
  }
}
ou
for($i=0;$i<500;$i++){
  if( $i =~ /[5-9]|[1-6][0-9]|7[0-6]/){
         .
         .
         .
  }
}
0
Merci les gars, s'est sympa !
0