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 :

caractere spéciaux dans une chaine de texte normal


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut caractere spéciaux dans une chaine de texte normal
    Bonjour, voici mon problème, $down à dans sa ligne de texte des ().
    quand je la compare`dans mon if elle retourne toujours enable, pourtant cela lui arrive de ressembler a my $down. j'Ai essayé quotemate et cela ne fonctionne pas. Quelqu'un a une idée svp..

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # Priv 1
    sub getStatus  {         
            my $down = "line protocol is down (disabled)";
            my ( $self, @args ) = @_;
            my $if = &harmonizeInts( $args[0] );
            my $cmd = "sh interface " . $if;
            my @result = $self->cmd( $cmd );
     
     
            foreach my $line ( @result )  {
     
                    if ( $line =~ $down)   
                    {
                    return "Disabled";
                    }
                   else{return "enable";}
     
            }
     
     
    }

  2. #2
    Membre régulier Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Points : 93
    Points
    93
    Par défaut
    Essai la commande "eq" au lieu de "=~".

    Et n'hésite pas à utiliser les balises Code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( $line eq $down)

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Cela ne fonctionne pas plus , lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $down = "line protocol is down";
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $down = "line protocol is down (disabled)";
    cela fonctionne, mais je veux comme la deuxième et ma ligne n'est pas égal parce qu'il y a d'autre texte sur la ligne.

  4. #4
    Membre régulier Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Points : 93
    Points
    93
    Par défaut
    D'accord ton besoin est plus de savoir si il y a "line protocol is down (Disabled)" sur ta ligne ou pas.

    Dans ce cas je te conseille d'utiliser une expressions régulières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($line =~ /.line protocol is down (Disabled)./)
    {
    return "Disabled";
    }
    plus d'infos -> By Djibril

    Edit : note queje débute en Perl et que les expressions régulières c'est tout ce que je connais :p

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    cela ne marche pas plus je l'avais déjà essayé. Mais j'ai décidé d'écrire à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ( $line =~ /disabled/) {return "Disabled";}
    j'ai l'impression que lorsque je mettais des () cela bloquait tout en tout cas
    un gros merci cela fonctionne maintenant

    Merci

  6. #6
    Membre régulier Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Points : 93
    Points
    93
    Par défaut
    Moui en fait les ( ) bloquent parce qu'elles représentent un bloc en expressions régulières.

    Essaie ceci cela devrait marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($line =~ /.line protocol is down \(Disabled\)./)
    {
    return "Disabled";
    }
    Les "\" permettent de prendre en compte les parenthèses qui sont interprétées comme des caractères de délimitation de bloc sinon. De même si tu veux lire un . ou un ^ ou même un \ il faut écrire \. \^ et \\

    Désolé j'ai légèrement manqué de précision. Faut dire que dans la FAQ Djibril ne liste pas tous les caractères propres à une reg exp

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par Olivier.p Voir le message
    Faut dire que dans la FAQ Djibril ne liste pas tous les caractères propres à une reg exp


    Il y a un topic intéressant ici pour toutes suggestions, ça permet de corriger ou rajouter des informations. Vos contributions sont les bienvenues.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/08/2012, 17h41
  2. Réponses: 13
    Dernier message: 18/07/2006, 23h06
  3. Réponses: 4
    Dernier message: 05/06/2006, 12h43
  4. Réponses: 3
    Dernier message: 24/04/2006, 15h53
  5. [RegEx] caractère spéciaux dans une chaine
    Par BigBarbare dans le forum Langage
    Réponses: 3
    Dernier message: 12/04/2006, 11h53

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