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 :

Créer une sortie sous forme de fichier html


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Créer une sortie sous forme de fichier html
    Bonjour,

    Je construis un script pour parser des fichiers et, en fonction du test de pattern, mettre les résultats dans un tableau.

    Voici pour l'instant ce que j'ai fais

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    use open ':encoding(utf8)';
    binmode(STDOUT, ":utf8");
     
    my $DateLog = localtime();
    print "===>Date : $DateLog\n";
     
    #my $contacts = '#';
     
    my $file = $ARGV[0];
    open(my $fh, '<:encoding(utf8)', $file) or die "Can't open '$file' $!";
     
     
    my $html = "rapport.html";
     
     
    #parsing des fichiers et creation du tableau de synthese
     
    while (my $row = <$fh>) {
      chomp $row;
        if ($row =~ "^77") {
           $html .= "<html><head></head><body><table><tr>";
          my @arr = split / /, $row;
          foreach my $item (@arr) {
         $html .= "<td>" . $item . "</td>";
          }
         $html .= "</tr></table></body></html>";
         }
        }
      print $html;
    Le script génère bien le code html mais comment générer un fichier html pour qu'ensuite on puisse l'envoyer? Je bloque sur ce point.

    Merci d'avance pour votre aide.

    Cordialement,

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ton code a plutôt l'air d'être en Perl 5.

    Pour ce qui est d'enregistrer dans un fichier, il suffit d'ouvrir un fichier destination en écriture et d'indiquer la ressource du fichier comme premier paramètre de print qui écrira alors dans le fichier à la place de la sortie standard.

    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
    22
    23
    open(my $fh, '<:encoding(UTF-8)', $file) or die "Can't open '$file' $!";
    open(my $fho, '>:encoding(UTF-8)', 'rapport.html') or die "Can't open 'rapport.html' $!";
    my $html = "";
     
    #parsing des fichiers et creation du tableau de synthese
     
    while (my $row = <$fh>) {
        chomp $row;
        if ($row =~ "^77") {
            $html .= "<html><head></head><body><table><tr>";
            my @arr = split / /, $row;
            foreach my $item (@arr) {
                $html .= "<td>" . $item . "</td>";
            }
            $html .= "</tr></table></body></html>";
            # J'imagine qu'à ce stade tu peux sortir de la boucle while
        }
    }
    print $fho $html;
     
    # ne pas oublier de fermer les fichiers
    close $fh;
    close $fho;
    D'ailleurs tu peux très bien te passer de la variable $html en écrivant tout au fur et à mesure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (my $row = <$fh>) {
        chomp $row;
        if ($row =~ "^77") {
            print $fho "<html><head></head><body><table><tr>";
            my @arr = split / /, $row;
            foreach my $item (@arr) {
                print $fho "<td>$item</td>";
            }
            print $fho "</tr></table></body></html>";
        }
    }
    Peut-être faut-il mieux placer l'ouverture et la fermeture du fichier rapport dans le if au cas où la ligne commençant par 77 n'existe pas.

    À ta place j'ajouterai à minima un doctype et une balise meta avec l'encodage dans ton html.

    Un peu de documentation: Writing to files with Perl et perldoc.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut parser fichiers et insérer résultats dans un tableau
    Ok, merci mais quand je teste, cela me génère un fichier html vide.
    Est-ce lié au pattern que je dois tester ?

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Si le fichier est vide, c'est que la condition $row =~ "^77" n'est pas satisfaite (condition qui exige que la ligne chompée commence par 77).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Parfait, ça marche! Merci

    Citation Envoyé par CosmoKnacki Voir le message
    Si le fichier est vide, c'est que la condition $row =~ "^77" n'est pas satisfaite (condition qui exige que la ligne chompée commence par 77).

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Petit ajout à ma demande.

    Je dois envoyer le fichier crée par mail.
    Quand je le fais en ligne de commande, c'est ok mais j'ai un soucis dans mon code

    Voici mon bout de code concernant l'envoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    my $mail = "
    Bonjour,
     
    Vous trouverez ci-joint le rapport mensuel des contrats rejetes.
     
    Fichier de synthese en piece jointe :'$fho'
     
    Cordialement,
    ";
      print "=> Envoi du mail\n";
      print  $mail;
       my $cmd=" /usr/bin/mutt -s ".'"Controle des contrats rejetes" -c '.$CCcontacts.' -- '.$contacts. -a '.$fho. ''';
            system $cmd;
        }
    Je penche pour une histoire de quote ou double quotes mais j'ai un doute.

    Merci d'avance pour votre aide

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    $fho est une ressource (FILEHANDLE dans la perldoc) vers le fichier lorsque celui-ci est ouvert, ce n'est pas le chemin vers le fichier. Or, ce dont mutt et ton message ont besoin c'est une chaîne de caractère contenant le chemin vers le fichier que tu viens de créer qui doit être rapport.html ou ./rapport.html.

    À l'avenir, merci d'utiliser les balises [code] pour rendre ton code lisible.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    je note, merci pour ton aide.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/07/2018, 11h15
  2. [AJAX] tableau HTML joint sous forme de fichiers
    Par fthem dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/09/2008, 09h01
  3. [phpBB][2] Récupérer sous forme de fichier html le code analysé
    Par ilood dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/02/2008, 17h28
  4. Réponses: 2
    Dernier message: 27/06/2007, 10h22
  5. comment créer une image sous forme d'eclipse(ronde)
    Par unix27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2005, 22h16

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