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

Programmation et administration système Perl Discussion :

tag d'un fichier à un autre


Sujet :

Programmation et administration système Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut tag d'un fichier à un autre
    Bonjour,
    Pour améliorer mon script http://www.developpez.net/forums/d14...r-fichier-pac/ que je souhaite simplifer, je voudrais mettre en place un système de tags.
    C'est à dire que dans mon fichier template il y aura des tags qui pointeront vers un fichier properties qui lui aussi contiendra les même tags.
    Ansi je ne touche pas au template, et le seul fichier auquel je touche serait le fichier properties (quelque lignes).

    mon fichier template :
    function FindProxyForURL(url, host)
    {
    // Direct connections to non-FQDN hosts
    if(isPlainHostName(host))
    { return "TAG1"; }
    // Otherwise use proxy Bureautique
    else return "TAG2";
    }
    dans le fichier properties :
    switch ($ARGV[1]){
    case RD { TAG1=DIRECT; TAG2=INTERNET;}
    case RA { TAG1=INTERNET; TAG2=DIRECT;}
    }
    perl properties.pl RD
    devrait nous rendre :
    function FindProxyForURL(url, host)
    {
    // Direct connections to non-FQDN hosts
    if(isPlainHostName(host))
    { return "DIRECT"; }
    // Otherwise use proxy Bureautique
    else return "INTERNET";
    }

    Bon ce n'est qu'une reflexion, mais je voudrais avant tout savoir si c'était possible de faire quelquechose dans le genre? et si oui, comment le metttre en place?

    et je suppose qu'il faudra un perl a mettre en place pour lier les 2 fichiers, mais je ne sais pas du tout comment.

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Tu as été largement passif dans ton dernier thread, désolé, ça ne m'incite pas à essayer de te pondre l'algo, le code et à te fournir tout sur un plateau.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Ce que je voudrais c'est savoir quelle methode utiliser pour créer un alias entre mon template et mon fichier de properties...

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Bon voici ce que j'ai fait :
    Mais je n'ai toujours pas la réponse à ma question qui est, comment faire pour chercher une valeur (par exemple __PROXY_DEBRANCHE_VALID__.) dans mon fichier properties.txt aller chercher la valeur qui suit le "=" en fonction du nom du fichier.pac (par exemple "aaa" pour valid2) et remplacer ce __PROXY_DEBRANCHE_VALID__ du template.txt par sa valeur (nnn)?

    generateur_pac.pl :
    my $psw1_valid_ipp1="$ARGV[1]-psw1-valid-ipp1.pac"
    my $psw1_valid_ipp2="$ARGV[1]-psw1-valid-ipp2.pac"
    my $psw1_valid1_ipp1="$ARGV[1]-psw1-valid1-ipp1.pac"
    my $psw1_valid1_ipp2="$ARGV[1]-psw1-valid1-ipp2.pac"
    my $psw1_valid2_ipp1="$ARGV[1]-psw1-valid2-ipp1.pac"
    my $psw1_valid2_ipp2="$ARGV[1]-psw1-valid2-ipp2.pac"
    my $psw1_valid3_ipp1="$ARGV[1]-psw1-valid3-ipp1.pac"
    my $psw1_valid3_ipp2="$ARGV[1]-psw1-valid3-ipp2.pac"
    my $psw2_valid_ipp1="$ARGV[1]-psw2-valid-ipp1.pac"
    my $psw2_valid_ipp2="$ARGV[1]-psw2-valid-ipp2.pac"
    my $psw2_valid1_ipp1="$ARGV[1]-psw2-valid1-ipp1.pac"
    my $psw2_valid1_ipp2="$ARGV[1]-psw2-valid1-ipp2.pac"
    my $psw2_valid2_ipp1="$ARGV[1]-psw2-valid2-ipp1.pac"
    my $psw2_valid2_ipp2="$ARGV[1]-psw2-valid2-ipp2.pac"
    my $psw2_valid3_ipp1="$ARGV[1]-psw2-valid3-ipp1.pac"
    my $psw2_valid3_ipp2="$ARGV[1]-psw2-valid3-ipp2.pac"


    on remplace les tags __PROXY_LENET__, __PROXY_BACKUP__, __PROXY_DIRECT__ par leurs valeurs cf properties.txt

    switch($ARGV[1]){
    case('campus'){on remplace les tags variables (__PROXY_WEB_PACK__, __PROXY_INTERNET__) associées à campus cf properties.txt}
    case('rd'){}
    case('ekino'){}
    case('steria'){}
    }

    grep(la chaine qui suit le 1er "-" du fichier.pac) et je prend la chaine qui vient jusqu'au prochain "-" puis remplacer __PROXY_PSW__ du template.txt (grep) par la valeur associée dans properties.txt
    grep(la chaine qui suit le 2ème "-" du fichier.pac) et je prend la chaine qui vient jusqu'au prochain "-" puis remplacer __PROXY_DEBRANCHE_VALID__ du template.txt (grep) par la valeur associée dans properties.txt
    grep(la chaine qui suit le 3ème "-" du fichier.pac) et je prend la chaine qui vient jusqu'au "." puis remplacer __PROXY_IPP__ du template.txt (grep) par la valeur associée dans properties.txt
    properties.txt :
    __PROXY_LENET__=PROXY aaa
    __PROXY_BACKUP__=PROXY bbb
    __PROXY_DIRECT__=DIRECT


    __PROXY_WEB_PACK__.campus=PROXY ccc
    __PROXY_WEB_PACK__.rd=PROXY ddd
    __PROXY_WEB_PACK__.ekino=PROXY eee
    __PROXY_WEB_PACK__.steria=PROXY fff

    __PROXY_INTERNET__.campus=PROXY ggg
    __PROXY_INTERNET__.rd=PROXY hhh
    __PROXY_INTERNET__.ekino=DIRECT
    __PROXY_INTERNET__.steria=DIRECT


    __PROXY_IPP__.ipp1=DIRECT
    __PROXY_IPP__.ipp2=PROXY iii

    __PROXY_PSW__.psw1=PROXY jjj
    __PROXY_PSW__.psw2=PROXY lll
    __PROXY_DEBRANCHE_VALID__.valid=DIRECT
    __PROXY_DEBRANCHE_VALID__.valid1=PROXY mmm
    __PROXY_DEBRANCHE_VALID__.valid2=PROXY nnn
    __PROXY_DEBRANCHE_VALID__.valid3=
    template.txt :
    function FindProxyForURL(url, host)
    {
    if(isPlainHostName(host))
    { return "DIRECT"; }
    else if(dnsDomainIs
    (host,"D.D.D.D")
    )
    { return "__PROXY_INTERNET__"; }
    else if(host == "C.C.C.C")
    { return "__PROXY_LENET__"; }
    else if(host == "B.B.B.B")
    { return "__PROXY_BACKUP__"; }
    else if(
    shExpMatch(host, "A.A.A.A")
    )
    { return "__PROXY_DIRECT__"; }
    else if(
    dnsDomainIs(host, "N.N..N.N")
    )
    { return "__PROXY_WEB_PACK__"; }
    else if(
    dnsDomainIs(host, "M.M.M.M")
    )
    { return "__PROXY_INTERNET__"; }
    else if(
    dnsDomainIs(host, "Z.Z.Z.Z")
    )
    { return "__PROXY_IPP__"; }
    else if(
    dnsDomainIs(host, "Y.Y.Y.Y")
    )
    { return "__PROXY_PSW__"; }
    else if(
    dnsDomainIs(host, "X.X.X.X")
    )
    { return "__PROXY_DEBRANCHE_VALID__"; }
    else return "__PROXY_INTERNET__";
    }

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Je ne comprends pas bien ce que tu veux faire, mais je te conseillerais de remplacer ta longue liste de if ... elsif ... elsif ... else par une table de distribution ou une table de hachage.

    Je ne comprends pas ce que tu n'arrives pas à faire.

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Ce que je n'arrive pas à faire, c'est remplacer, par exemple, __PROXY_PSW__ de mon fichier template.txt par la valeur qui suit le "=" de mon fichier properties.txt associé à __PROXY_PSW__ en fonction de la valeur de psw (psw1 ou psw2).

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    deja comment mémoriser/prendre "__PROXY_PSW__" ?
    cat template.txt | grep __PROXY_PSW__ ...

    Puis comment mémoriser/prendre ce qui suit le "=" de la ligne "__PROXY_PSW__.psw1=PROXY jjj" (car j'ai choisi psw1) soit "PROXY jjj"

    enregistrer ce qui se trouve dans template.txt dans $ARGV[1]-psw1-valid-ipp1.pac

    puis échanger le nouveau __PROXY_PSW__ du nouveau template ($ARGV[1]-psw1-valid-ipp1.pac) par la chaine qui suit le "=" de properties.txt soit "PROXY jjj"
    :
    s/__PROXY_PSW__/PROXY jjj ...

    et l'enregistrer dans "$ARGV[1]-psw1-valid-ipp1.pac"

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Une session sous le debugger Perl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      DB<1> $_ = '__PROXY_DEBRANCHE_VALID__.valid1=PROXY mmm';
     
      DB<2> $tag = $1 if /__PROXY_DEBRANCHE_VALID__\.valid1=([\w\s]+)$/;
     
      DB<3> p $tag
    PROXY mmm
    C'est cela que tu veux arriver à faire?

    Tu peux aussi faire comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $tag = (split /=/, $_)[1];

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      DB<1> $_ = '__PROXY_DEBRANCHE_VALID__.valid1=PROXY mmm';
     
      DB<2> $tag = $1 if /__PROXY_DEBRANCHE_VALID__\.valid1=([\w\s]+)$/;
     
      DB<3> p $tag
    PROXY mmm
    Je ne comprend pas ce que fait ton code.
    en effet, $_ n'est pas utilisé après...
    je ne vois pas non plus ce que $1 viens faire ici... quel est ton argument?

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    pour reprendre le code d'une manière qui t'es peut être plus familière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OPEN(FIC_IN, "Ton_fichier.txt") # Ouverture fichier
    while(<FIC_IN>){                   # Lecture ligne par ligne du fichier
       $tag = $1 if /__PROXY_DEBRANCHE_VALID__\.valid1=([\w\s]+)$/;
    }
    $1 correspond au 1er argument renvoyé par la regex (partie entre parenthèse de l'expression)

    pour l'autre proposition de @Lolo78:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OPEN(FIC_IN, "Ton_fichier.txt") # Ouverture fichier
    while(<FIC_IN>){                   # Lecture ligne par ligne du fichier
       $tag = (split /=/, $_)[1];
    }
    dans ce cas, $_ correspondant au contenu de la ligne et l'expression te permet de découper le ligne au niveau du signe "=" et tu récupères juste la fin

  11. #11
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    ok, donc si je veux prendre ce qui suit le "=", et ca pour n'importe quelle chaine, je dois utiliser la fonction split?
    (split /=/, $_)[1];
    à quoi sert la "[1]"? est-ce ce 1 qui nous permet de prendre ce qui suit?
    Si c'était 0 j'aurais pris ce qui précede?

  12. #12
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Maintenant ce que je voudrais, c'est lire mon fichier template.txt et m'arreter avec un curseur (seek/lseek) à __PROXY_DEBRANCHE_VALID__.
    Après je pourrais écrire le proxy adapté.

  13. #13
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    je vais m'essayer à une réponse car je suis pas sûr de bien comprendre ta problématique.
    J'ai cru comprendre que tu souhaitais remplacer les termes du genre "__PROXY_PSW__" du fichier "templates.txt par leur valeurs stockées dans le fichier "properties.txt"
    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
    open (FIC_PROP, "properties.txt");
    my %h_PROP;
    while (<FIC_PROP>){
        my ($key, $value) = split('=', $_);
        $h_PROP{$key}=$value;
    }
    close(FIC_PROP)
    open (FIC_TEMPLATE, "templates.txt");
    open (FIC_OUT, "templates.modif.txt");
    while (<FIC_TEMPLATE>){
        if ( $_ =~ /(\{return ")(__[A-Z]+_[A-Z]+__)("; \})/ ){
            print FIC_OUT $1.$h_PROP{$2}.$3
        }
        else{
            print FIC_OUT $_;
        }
    }
    La 1ère boucle te permet de récupérer les infos du fichier "properties" sous la forme d'un hash.

    dans le second fichier, ta partie à transformer est la clé du hash donc la substitution est facile

    J'espère que ça répondra au moins en partie à ton problème sinon, essaie de réexpliquer ce que tu souhaites, ce qui ne va pas dans mon raisonnement...

  14. #14
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    En effet c'est bien ce que je veux faire, mais ça ne me créer pas le fichier template.modif.txt...
    #!/usr/bin/perl

    use File::Copy;
    use strict;

    open (FIC_PROP, "properties.txt");
    my %h_PROP;
    while (<FIC_PROP>){
    my ($key, $value) = split('=', $_);
    $h_PROP{$key}=$value;
    }
    close(FIC_PROP);
    open (FIC_TEMPLATE, "template.txt");
    open (FIC_OUT, "template.modif.txt");
    while (<FIC_TEMPLATE>){
    if ( $_ =~ /(\{return ")(__[A-Z]+_[A-Z]+__)("; \})/ ){
    print FIC_OUT $1.$h_PROP{$2}.$3;
    }
    else{
    print FIC_OUT $_;
    }
    }

  15. #15
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alexis.melot Voir le message
    ok, donc si je veux prendre ce qui suit le "=", et ca pour n'importe quelle chaine, je dois utiliser la fonction split?
    (split /=/, $_)[1];
    à quoi sert la "[1]"? est-ce ce 1 qui nous permet de prendre ce qui suit?
    Si c'était 0 j'aurais pris ce qui précede?
    La fonction split découpe la chaîne de caractères en un tableau, en utilisant le caractère '=' comme séparateur. Donc, si ta chaîne est '__PROXY_DEBRANCHE_VALID__.valid1=PROXY mmm', on se retrouve avec un tableau de deux éléments: '__PROXY_DEBRANCHE_VALID__.valid1' et 'PROXY mmm'. L'indice [1] appliqué à ce tableau récupère simplement le second élément, donc 'PROXY mmm'. De même, '(split /=/, $_)[0]' aurait récupéré '__PROXY_DEBRANCHE_VALID__.valid1'. C'est plus clair?

  16. #16
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alexis.melot Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      DB<1> $_ = '__PROXY_DEBRANCHE_VALID__.valid1=PROXY mmm';
     
      DB<2> $tag = $1 if /__PROXY_DEBRANCHE_VALID__\.valid1=([\w\s]+)$/;
     
      DB<3> p $tag
    PROXY mmm
    Je ne comprend pas ce que fait ton code.
    en effet, $_ n'est pas utilisé après...
    je ne vois pas non plus ce que $1 viens faire ici... quel est ton argument?
    Pas besoin. La ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DB<2> $tag = $1 if /__PROXY_DEBRANCHE_VALID__\.valid1=([\w\s]+)$/;
    s'applique par défaut à la variable $_. Elle est équivalente à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DB<2> $tag = $1 if $_ =~  /__PROXY_DEBRANCHE_VALID__\.valid1=([\w\s]+)$/;
    $1 a été expliqué par Cyril, mais pour confirmer: elle récupère la première capture de l'expression régulière, autrement dit ce qui se trouve dans la première paire de parenthèses, ici ce qui est reconnu par : ([\w\s]+). De même que $2 récupérerait ce qui est reconnu et encadré par le seconde paire de parenthèses (s'il y en avait une), et ainsi de suite.

  17. #17
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par alexis.melot Voir le message
    En effet c'est bien ce que je veux faire, mais ça ne me créer pas le fichier template.modif.txt...
    Ha non, il falait rajouter les chevrons!
    En revanche rien n'a changé entre mon template.txt et mon template.modif.txt.

    mais je pense qu'il y a un problème avec les conditions, on entre jamais dans le if, et toujours dans else.

    Quelqu'un sait d'où vient l'erreur de print?

  18. #18
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par alexis.melot Voir le message
    Ha non, il falait rajouter les chevrons!
    En revanche rien n'a changé entre mon template.txt et mon template.modif.txt.

    mais je pense qu'il y a un problème avec les conditions, on entre jamais dans le if, et toujours dans else.

    Quelqu'un sait d'où vient l'erreur de print?
    ben la réponse est dans la question en fait
    tu fais une simple copies car tu n'entres jamais dans le "if"

    je me suis basé sur ton exemple mais je ne peux pas deviner si ta ligne/ fichier à un format différent
    je pense que la modification de la regex ne présente pas non plus une trop grande difficulté mais si besoin poste ce que tu as essayé et un vrai format de fichier


    mais attention quand tu rentreras dans le if tu auras un problème de substitution car dans le hash , les clé sont: __PROXY_DEBRANCHE_VALID__.XXX
    alors qu'au moment de la comparaison tu as seulement __PROXY_DEBRANCHE_VALID__

  19. #19
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Mais je pense qu'il y a un problème de syntax dans
    /(\{return ")(__[A-Z]+_[A-Z]+__)("; \})/
    en gros { return "__PROXY_INTERNET__"; } du template.txt ne correspond pas à /(\{return ")(__[A-Z]+_[A-Z]+__)("; \})/


    j'ai changé les expression regulière, mais ça ne marche quand meme pas : aucun changement entre le template.txt et le template.modif.txt :
    #!/usr/bin/perl

    use File::Copy;
    use strict;

    open (PROPERTIES, "<", "properties.txt");
    my %PROXY;
    while (<PROPERTIES>){
    my ($key, $value) = split('=', $_);
    $PROXY{$key}=$value;
    }
    close(PROPERTIES);
    open (TEMPLATE, "<", "template.txt");
    open (TMP, ">", "template.modif.txt");
    while (<TEMPLATE>){
    if ( $_ =~ /(\{return ")(__PROXY_\W__)("; \})/ ){
    print TMP $1.$PROXY{$2}.$3;
    }
    if ( $_ =~ /(\{return ")(__PROXY_\W_\W__)("; \})/ ){
    print TMP $1.$PROXY{$2}.$3;
    }
    if ( $_ =~ /(\{return ")(__PROXY_\W.\w__)("; \})/ ){
    print TMP $1.$PROXY{$2}.$3;
    }
    else{
    print TMP $_;
    }
    }
    close (TEMPLATE);
    close (TMP);

  20. #20
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Sur les regex, il faut être très précis, un espace en plus ou en moins et le motif échoue (et dans ce cas, tu passes dans la branche else.

    Poste exactement la regex que tu utilises et exactement le texte que tu cherches à reconnaître. Par exemple, il y a un ; après le guillemet dans la regex, il n'y en avait pas dans les exemples de textes que tu as donnés.

Discussions similaires

  1. [VBA-Excel] copier des lignes de données d'un fichier à un autre
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2006, 10h17
  2. comment copier une ligne d'un fichier à un autre
    Par debutant-1 dans le forum C
    Réponses: 14
    Dernier message: 26/06/2006, 21h01
  3. [VBE]tout bête: sauter d'un fichier à l'autre
    Par Yanos dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/06/2006, 16h50
  4. Réponses: 2
    Dernier message: 02/05/2006, 01h00
  5. Réponses: 3
    Dernier message: 13/04/2006, 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