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 :

bash => Perl : passer des caractères spéciaux


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut bash => Perl : passer des caractères spéciaux
    Bonsoir à tous,

    Je suis en train de transformer un script "bash" en script "Perl".
    L'ancien script lance des séries de commandes très particulières ( caractères spéciaux), qui me pose des soucis.
    J'ai réussi à adapter ma première commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/local/bin/svdrpsend.pl mesg "Lancement..."> $OTV_LOG
    comme ceci (c'est OK)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print `/usr/local/bin/svdrpsend.pl mesg "Lancement..."> $OTV_LOG`;
    En revanche, je n'arrive pas à transformer la seconde (difficulté à traiter les nombreux caractères spéciaux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan | grep "250 " | cut -d" " -f2`
    Pourriez-vous m'aider ?

    D'avance merci.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Points : 145
    Points
    145
    Par défaut
    Essaye sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`
    Certain caractères spéciaux nécessitent un "\" avant pour qu'ils apparaissent corectement dans la console ou autre.
    Car ils peuvent être utilisé sous perl.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @  définit un tableau
    $  définit une variable
    %  définit un tableau de hachage

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Merci, j'ai essayé en vain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`";
    L'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@PCTEST otvepg2]# ./otvepg2vdr.pl
    Number found where operator expected at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
            (Missing operator before 250?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "250 " \| cut -d""
            (Missing operator before  " \| cut -d"?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "" \| cut -d" " -f2`""
            (Missing operator before  " -f2`"?)
    syntax error at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
    Execution of ./otvepg2vdr.pl aborted due to compilation errors.
    Et ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print ` "$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2` `;
    Cela ne passe pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@PCTEST otvepg2]# ./otvepg2vdr.pl
    Number found where operator expected at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
            (Missing operator before 250?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "250 " \| cut -d""
            (Missing operator before  " \| cut -d"?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "" \| cut -d" " -f2`""
            (Missing operator before  " -f2`"?)
    syntax error at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
    Execution of ./otvepg2vdr.pl aborted due to compilation errors.
    [root@PCTEST otvepg2]#
    Avez-vous une idée ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Points : 145
    Points
    145
    Par défaut
    je comprend pas ta commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system "$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`";
    $SAVED_CHANNEL doit récupérer le résultat de la commande ?
    ou c'est une variable qui doit être éxécutée ?

    Je te prend les 2 cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep \"250 \" \| cut -d\" \" -f2`");

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @SAVED_CHANNEL =`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`;

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Désolé, j'aurais du être plus précis. Je veux mémoriser le résultat d'une commande? (Je dialogue avec une application DVB, et
    récupère le n° du canal actif. Exemple 1 pour TF1, 2 pour France 2 ...)

    La syntaxe est bien celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    system ("$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep \"250 \" \| cut -d\" \" -f2`"); 
    print "valeur: $SAVED_CHANNEL\n";
    exit;
    Cela fonctionne presque !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [root@PCTEST otvepg2]# ./otvepg2vdr.pl
    sh: =18: command not found
    valeur:
    [root@PCTEST otvepg2]#
    Le canal actif est bien 18, mais la valeur n'est pas enregistrée dans $SAVED_CHANNEL.
    Je ne vois pas pourquoi la console me répond "sh:=18:"

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Points : 145
    Points
    145
    Par défaut
    Tu n'as pas essayé le 2ème cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @SAVED_CHANNEL =`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`;

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Hide
    Tu n'as pas essayé le 2ème cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @SAVED_CHANNEL =`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`;
    Super ! Cela marche merci beaucoup.
    Néanmoins, un truc m'échappe : pourquoi doit-on utiliser @VALEUR et non pas $VALEUR ?

    Merci.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Points : 145
    Points
    145
    Par défaut
    Si tu es sur que ce que va te renvoyez la commande est sur une seul ligne alors tu peux utiliser une variable $ mais si tu n'es pas sur , il est plus intéressant d'utiliser un tableau @

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Hide
    Si tu es sur que ce que va te renvoyez la commande est sur une seul ligne alors tu peux utiliser une variable $ mais si tu n'es pas sur , il est plus intéressant d'utiliser un tableau @
    C'est noté.
    Merci encore.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/03/2007, 16h20
  2. problème avec l'affichage des caractères spéciaux
    Par michelkey dans le forum Général Python
    Réponses: 4
    Dernier message: 19/08/2005, 08h09
  3. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30
  4. traitement des caractères spéciaux avec XSLT
    Par Mirgue dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/07/2004, 16h57
  5. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54

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