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 :

convertir une chaine de caract en code Perl


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 86
    Points : 35
    Points
    35
    Par défaut convertir une chaine de caract en code Perl
    Bonjour,

    je veux ecrire une codition dans un programme Perl,
    L'expression de la condition est stockée dans une base de donnée
    (ex: VAR1<3)
    je recupere ce contennu dans mon prog perl ensuite je fais if(contenu_recupéré)
    mais cela ne fonctionne pas. je pense que la variable contenu_recupéré est consideré comme une chaine de caractère mais pas du code Perl,

    Comment faire pr convertir une chaine de caractere en code Perl?

    Merci

  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
    Ma solution n'est pas esthétique, mais tu peux essayer avec des expressions régulières (à optimiser selon tes besoins).

    Essaie ça :

    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
     
    $condition = "VAR1<3"; #ou l'extrait de ta DB
    $VAR1 = 2;
    if ($condition =~/(\w+)$/) 	{ $valeur = $&; }
     
    if ($condition =~/>/)
    {
    	if ($VAR1 > $valeur) { print "condition vraie! \n"; }
    	else 	{ print "condition fausse!\n"; }
    }
    elsif ($condition =~/</)
    {
    	if ($VAR1 < $valeur)  { print "condition vraie! \n"; }
    	else 	{ print "condition fausse!\n"; }
    }
    elsif ($condition =~/=/)
    {
    	if ($VAR1 = $valeur)  { print "condition vraie! \n"; }
    	else 	{ print "condition fausse!\n"; }
    }
    else 	{ print "signe non reconnu ! !\n"; }
    Par contre VAR1 doit être un nombre.

    Pour plus d'infos sur les expressions régulières -> By Djibril

    Une autre solution consiste à attendre qu'une personne plus expérimenté que moi te réponde...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 86
    Points : 35
    Points
    35
    Par défaut
    "VAR1<3" est seulement un exp, la condition peut etre n'importe.
    auriez vous une sol svp?

    Merci

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu peux utiliser eval(), néanmoins c'est un gros risque de sécurité si tu ne maitrises pas la source du code, et tu introduis également la possibilité de bugs venant de l'extérieur de ton programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my $perl_code = "7 > 6 && 18 - 5 == 13";
    if( eval $perl_code ) {
      print "This could be a really bad idea, Are you sure you don't have another solution ?\n";
    }
    Et si tu nous expliquais ce que tu essaies de faire exactement ?

    --
    Jedaï

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/01/2006, 23h14
  2. [C#] Convertir une chaine accentue => sans accents
    Par alex57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/09/2005, 09h21
  3. Convertir une chaine en format heure
    Par Lars dans le forum ASP
    Réponses: 3
    Dernier message: 24/05/2005, 11h44
  4. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57
  5. Réponses: 10
    Dernier message: 22/05/2004, 13h51

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