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 :

Modèle en perl : génération de fichiers


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut Modèle en perl : génération de fichiers
    Bonjour,
    je dois construire des fichiers et j'utilise la méthode format mais les données que je récupère n'ont pas toutes la même taille.
    Je dois obtenir les données encadrées sans blanc ! (ici name et description)
    Comment faire pour soit supprimer les blancs soit utiliser une autre méthode !
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    format XML =
    <?xml version="1.0" encoding="UTF-8"?>
    <Group failonerror="true">
    <name="@!!!!!" description="@<<<<<<<<<<<<<<<<<<<"/>
    $1, $2
    </Group>
    .
     
    open(XML,">$path/Config.xml"); write XML;close XML;
     
    open(XML,">>$path/$Config.xml"); $1=1;$2=2;write XML;close XML;
    open(XML,">>$path/$Config.xml"); $1=111;$2=222;write XML;close XML;

  2. #2
    Expert confirmé
    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
    Par défaut
    Pourquoi utilises-tu les formats si tu ne veux pas de mise en forme ?
    Une simple fonction peut suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sub xmlGroup {
      my ($name, $descr) = @_;
      return <<EOX;
    <?xml version="1.0" encoding="UTF-8"?>
    <Group failonerror="true">
    <name="$name" description="$descr"/>
    </Group>
    EOX
    }
     
    open(XML,">$path/Config.xml"); print XML xmlGroup( 111, 222 ); close XML;
    Peut-être que tu devrais plutôt utiliser un module de template comme il y en a des dizaines sur le CPAN si tu as souvent ce genre de code à faire.

    --
    Jedaï

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut
    Bonjour,
    une erreur se produit au lancement :
    Can't find string terminator "EOX" anywhere before EOF at test.pl line 3.

    A quoi sert EOX ...

    Merci pour votre rapidité et la qualité de vos réponses.

  4. #4
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par falco- Voir le message
    Bonjour,
    une erreur se produit au lancement :
    Can't find string terminator "EOX" anywhere before EOF at test.pl line 3.

    A quoi sert EOX ...

    Merci pour votre rapidité et la qualité de vos réponses.
    C'est parce que tu n'as pas recopié exactement ce que j'ai écrit, plus exactement tu as dû mettre un espace devant le EOX en début de ligne. C'est une notation appelée HEREDOC et ça sert à mettre des chaînes de caractères de plusieurs lignes de façon propre dans un script Perl :
    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
    my $vars = 'variables';
    my $string = <<HELLO;
    Ceci est un HEREDOC, il s'arrêtera seulement lorsque la chaîne HELLO
    sera trouvée en première colonne, seule sur sa ligne.
    On peut y interpoler des $vars comme dans une chaîne entre double
    quotes " ", mais on peut controler ce comportement plus précisément
    en mettant <<'HELLO' par exemple au lieu de <<HELLO, on interdit
    l'interpolation dans la chaîne.
    Voici la fin :
    HELLO
     
    print $string;
    print "Nous sommes de nouveau dans du code normal\n";
     
    print <<HOP, "Après le HEREDOC";
    On peut insérer un HEREDOC n'importe où l'on pourrait mettre une
    string normale, il faut juste se rappeler que le texte du HEREDOC 
    commencera à la ligne suivante.
    HOP
     
    __END__
    Je remarque que la coloration du code fait absolument n'importe quoi, mais ne t'inquiète pas, tous les bons éditeurs de texte qui prennent en charge la coloration syntaxique du Perl colorent les HEREDOC correctement.

    --
    Jedaï

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut
    Bonjour,
    merci pour vos conseils.
    tout est ok.
    C'est plus facile en utilisant ces fonctions que les formats (dans mon cas).
    Le HEREDOC (!) est très pratique pour formater un fichier en xml.
    Cordialement.

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

Discussions similaires

  1. Génération de fichiers ODF (sur base d'un modèle)
    Par habot dans le forum VBScript
    Réponses: 0
    Dernier message: 10/10/2014, 14h13
  2. Réponses: 4
    Dernier message: 23/02/2007, 15h06
  3. [PERL] transformation de fichier
    Par bob20000 dans le forum Langage
    Réponses: 6
    Dernier message: 27/07/2006, 11h13
  4. Perl/Mason pb fichiers
    Par Katz dans le forum Modules
    Réponses: 5
    Dernier message: 08/08/2005, 11h54

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