IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] split qui ne marche pas sur des nombres...


Sujet :

Langage Perl

  1. #1
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut [langage] split qui ne marche pas sur des nombres...
    Salut !!
    Je souhaite utiliser la fonction "split" sur une adresse IP afin d'incrémenter la dernière valeur de 1. Mais ça ne fonctionne pas. Voilà ce que ça donne :

    interco : 10.128.240.116
    0 :
    1 :
    2 :
    3 :

    nouvelle adresse Ip interco : ...1



    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    print "interco : $IPinterco<br>";
     
    @tab = split('.',$IPinterco);
     
    print "0 : @tab[0]<br>";
    print "1 : @tab[1]<br>";
    print "2 : @tab[2]<br>";
    print "3 : @tab[3]<br>";
     
    @tab[3]++;
    $IPinterco = @tab[0].".".@tab[1].".".@tab[2].".".@tab[3];
    print "<br>nouvelle adresse Ip interco : $IPinterco<br>";
    Verre vide je te plains, verre plein, je te vide.

  2. #2
    Membre habitué
    Inscrit en
    août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    il faut écrire split '\.' car le '.' est le méta-caractère qui remplace n'importe quel caractère...
    une astuce avec les expressions régulières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $IPinterco =~ s/(\d+)$/$1+1/e;
    -- plus les choses changent...
    plus elles restent les mêmes
    --snake plissken
    pb résolus +20

  3. #3
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    Merki bcp ma'm'zelle !!! Suis trop con de pas y avoir pensé, je l'utilise pour les backslashes déjà...

    Je débute en perl, tu pourrais m'expliquer la sustitution que tu viens de me donner ?
    Verre vide je te plains, verre plein, je te vide.

  4. #4
    Membre habitué
    Inscrit en
    août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $IPinterco =~ s/(\d+)$/$1+1/e;
    $variable =~ s///; effectue une substitution sur la variable '$variable'


    le filtre se met entre les deux premiers '//'
    \d filtre un chiffre
    \d+ filtre au moins 1 chiffre (et plus...)
    $ représente la fin de '$variable'
    les () autour de \d+ représente le motif que l'on filtre et qui se trouveront dans $1 dans la valeur de remplacement

    la valeur de remplacement entre les deux derniers '//'
    le 'e' à la fin du s/// force l'évaluation de la valeur de remplacement, i.e. $1 est remplacé par la valeur qui est trouvée dans le filtre...

    note si tu veux jouer avec une adresse IP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $ip =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/;
    # $1 est le premier octet
    # $2 le deuxième
    # $3 le troisième
    # et $4... le dernier :)
    -- plus les choses changent...
    plus elles restent les mêmes
    --snake plissken
    pb résolus +20

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. setattribut qui ne marche pas sur IE7
    Par taka10 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/09/2007, 12h48
  2. Réponses: 25
    Dernier message: 16/02/2007, 16h37
  3. Réponses: 14
    Dernier message: 27/08/2006, 20h47
  4. DATEDIFF() qui ne marche pas sur une version 5.0.xx
    Par vallica dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/05/2006, 18h44
  5. Réponses: 9
    Dernier message: 07/05/2003, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo