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 :

traitement de chaines de caracteres


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut traitement de chaines de caracteres
    bon alors je debute tout juste en programmation et je galere dur en perl. voici mon probleme:
    j'ouvre dans un fichier .pl un fichier text où se trouve des variables que je vais devoir exploiter dans mon fichier.

    mon fichier texte ressemble à ca:
    variable1="le petit oiseau";
    variable2="le mechant garcon";
    .........

    alor pour le moment mon fichier principal ressemble à ca( je passe sur l'en-tête...):

    open(MON_FICHIER,"lefichier.txt");
    while<MON_FICHIER>
    {
    my $varname=_$;
    my $varcontent=_$;

    #et là je cherche comment traiter mes variables pour qu'elles contiennent pour la première tout ce qu'il y a avant le "=" et l'autre tout ce qu'il y a après.
    }

    si vous avez des idées
    merci beaucoup!!!!!

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut


    ensuite, pour ce que tu cherches à faire, tu peux utiliser la fonction split :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my ($varname, $varcontent) = split /=/,$_;
    @+
    Mr6

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    merci beucoup ca m'aide bien
    maintenat nouveau probleme, j'ai oublié de bien détailler mon fichier text:
    "
    $variable1= "le petit oiseau"; #variable d'initialisation
    ..........
    "
    comment faire pour que le ";" ainsi que le commentaire ne soit pas stocker dans ma deuxieme variable?

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my ($varname, $varcontent,$reste) = split /=|\;/,$_;

    pour la 2ème fois :

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    merci encore une fois...

    maintenant commant faire pour utiliser ces variables(exportées de mon fichier text) dans mon code. j'imagine qu'il va falloir déjà les nommer en tant que variable avec un "my"?

    en fait il faut que je puisse me servir de ces nouvelles variables en les utilisant comme:
    $varname=$varcontent;

  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
    sur le code de Mr6 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $varname = le nom de ta variable (ex : $variable1)
    $varcontent = le contenu de ta variable (ex : "le petit oiseau")
    $reste = contient le reste (ex: #variable d'initialisation)
    my précise si ta variable est locale ou globale

    Voir la FAQ

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    ok.

    en fait voila mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while<MON_FICHIER>
    {
    my($varname,$varcontent)= split.......  #ca decoupe impec merci :)
    print $varname;
    print $varcontent."\n";
    }
    cette boucle fonctionne tres bien et m'affiche toutes mes variables avec leurs valeurs.
    Mais je voudrai pouvoir extraire ces variables en question avec leur noms et valeurs car plus loin mon code attend ces variables.

  8. #8
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Récupérer des variables dont les valeurs, et surtout les noms sont définies dans un fichier peut être une opération à risque.

    Il existe cependant plusieurs possibilités.

    L'une d'elles est d'écrire ce fichier de variables en perl (dans le cas que tu nous montres, il suffirait d'ajouter un $ au nom de chaque variable) et, dans le script appelant, il suffit de faire un Cette manipulation n'est pas forcément compatible avec les clauses strict et warnings (enfin, surtout avec strict). Et quand bien même, il faut aussi maitriser la portée des variables : si elles sont définies avec my, on ne les récupérera pas !


    Une autre solutions, qui a nettement ma préférence, est de remplir une table de hachage avec tes "variables externes". On utilise alors comme clef le nom de la variable, pour indexer la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my %variables;
     
    ...
     
    # dans la boucle de lecture
    $variables{$varname}=$varcontent;
    Comme ça, tout est compatible avec strict, il est possible d'avoir la liste des noms des variables (par keys(%variables)) et on peut récupérer n'importe quelle valeur à tout moment.

    Il ne faut pas hésiter
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    ok merci!

    maintenant je n'arrive pas à exploiter ces variables....

    pourtant je met bien(apres ma boucle de récupération et ma déclaration de table de hachage):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    print $variables{nom_d'une_variable};
    mon appel est il mauvais ou est-ce un autre probleme?

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $variables{'$variable1'}  ;
    la chaine de caractère '$variable1' est le nom de la clé tu dois la mettre entre apostrophe.

  11. #11
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    La déclaration doit être faite avant la boucle.

    Le remplissage doit être fait dans la boucle.

    L'utilisation est faite après la boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $variables{nom_d'une_variable};
    J'imagine que le "d apostrophe une" n'est pas réellement le contenu de ton code ...

    L'élément entre les { } doit être une chaine de caractères, et correspondre exactement (espaces et autres symboles compris) à la clef utilisée lors du remplissage.

    En sortie de la boucle de remplissage, on peut vérifier le contenu de la table de hachage avec un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "variable{".$_."} -> ".$variables{$_}."\n" foreach (keys (%variables));
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    ok merci beaucoup!

    petite précision pour ceux qui auront besoin du code il ne faut pas mettre le $ devant le nom de la variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    print $variables{'variable1'}  ;

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Encore un souci avec mon exploitation de variable dans un fichier perl venant d'un fichier text.
    Dans mon fichier text j'ai une variable du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    variable_1=hit=1$;
    Le souci c'est que le découpage ne laisse que dans ma variable "variable_1" le "hit", alors que je voudrai que cette "variable_1" contienne: "hit=1$".
    Est il possible de faire quelque chose dans mon split ou autre par sachant que mes autres variables sont du style: "variable_2="le petit chat"; ?
    merci

  14. #14
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Remplacer le split par une expression rationnelle bien pensée ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($varname, $varcontent) = ($_ =~ m/(.*?)=(.*?)\;/);
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    MERCI encore une fois!!!

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

Discussions similaires

  1. Performance sur traitement de chaine de caracteres
    Par Paniez dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/03/2014, 14h25
  2. [debutant][traitement de chaine de caractere]
    Par hash92 dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2005, 15h53
  3. fonctions de traitements de chaines de caracteres
    Par jerem001_5 dans le forum C
    Réponses: 19
    Dernier message: 24/11/2005, 20h47
  4. Cherche fonction de traitement de chaine de caractere
    Par DeezerD dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2005, 14h41
  5. Réponses: 5
    Dernier message: 21/07/2004, 19h34

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