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 :

Traduire un script shell en perl


Sujet :

Langage Perl

  1. #41
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    Peut-t-on rajouter une information ; si il n'y a pas d'information dans le fichier , le message envoyer par mail ça sera " pas d'info".

  2. #42
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ( -s "/tmp/info.txt" ) {
    	my $message = "\n\n\Ci-dessous les info :\n\nBonne reception";
    } else {
    	my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    }

    -e teste si son paramètre est un chemin valable dans le système de fichier (répertoire, fichier, etc). On pourrait l'utiliser ainsi :

    if( -e "/usr/tmp/fichier" ) {
    print "Le fichier existe\n";
    }

    -f teste si son paramètre est un fichier normal.

    -d teste si son paramètre est un répertoire.

    -l teste si son paramètre est un lien symbolique. Ceci n'exclut pas que -f ou -d renvoie vrai.

    -r teste si le programme a le droit de lire le fichier/répertoire/etc passé en paramètre.

    -w teste si le programme a le droit d'écrire.

    -x teste si le programme a le droit d'exécuter le fichier ou d'accéder (ou axéder :-)) au répertoire.

    -o teste si le fichier appartient à l'utilisateur qui exécute le programme.

    -z teste si le fichier est vide.

    -s teste si le fichier est non vide ; en fait cet opérateur renvoie la taille du fichier.

    -M renvoie l'âge en jour du fichier (depuis le début de l'exécution du programme).

    Il existe tout plein d'autres opérateurs sur les fichiers !

    ET TOUT PLEIN D'INFO DANS LES COURS ET DANS LA FAC LA DOC entre autres ...

    Vous pouvez aussi cliquer sur le bouton "Résolu" ça donne du courage aux personnes qui cherchent de lire jusqu'au bout...

    Bonne continuation !

  3. #43
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    Merci bcp pour ces jolies liens qui vont me servir pour ce superbe langage
    par la méme occassion bonnes fétes

    dernière question juste pour information : j'ai utilisé la condition if ( -s "fichier ")

    j'ai les messages suivants:

    Unrecognized escape \C passed through at ./mail.pl line 19.
    Unrecognized escape \i passed through at ./mail.pl line 22.
    Global symbol "$message" requires explicit package name at ./mail.pl line 32.
    Execution of ./toto.pl aborted due to compilation errors.

    ligne 19 : my $message = $text . "\n\n\Ci-dessous les info :\n\nBonne reception";
    ligne 22 : my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    ligne 32 : Data ==> $message


    j'ai essayé d'utiliser plusieurs alternative mais toujours le même problème

    Avez-vous une idée ?

    Merci bcp

  4. #44
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    MERCI, bonnes fêtes à vous aussi

    Unrecognized escape \C passed through at ./mail.pl line 19.
    Unrecognized escape \i passed through at ./mail.pl line 22.
    Il maque quelque chose quelque part ' ou " ou ; ....................
    L'anomalie peut venir des lignes précédentes !...

    Lorsque vous posez une telle question, n'hésitez pas, après avoir beaucoup cherché par vous même, car c'est encore la meilleure façon de progresser, à faire un véritable copier/coller d'une large partie du source, afin qu'on puisse vous aider.
    Là on ne peut rien voir, l'anomalie est certainement au dessus...
    Faut presque être devin

    Global symbol "$message" requires explicit package name at ./mail.pl line 32.
    indique que vous n'avez pas déclaré la variable $message

    et que vous avez utilisé la directive
    use strict;
    au début ce qui est très bien !

    Il faut seulement mettre my devant $message :

    le "my" limite la portée de la variable, ainsi si vous la déclarez dans une boucle, cette variable n'est pas accessible à l'extérieur de la boucle...

    [Edit 16:00]
    Mais en résolvant les "Unrecognized" il y a des chances que "requires explicit package" soit résolu...

  5. #45
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    je pense que le probléme vient du déclaration de my $message qui n'est pas reconnu par le data ==>

    voici le code :

    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
     
     
    #!/usr/bin/perl
    use strict;
    use warnings;
    use MIME::Lite;
     
    my $text = "Bonjour,\n\nCi-dessous les infos :\nBonne reception !\n\n";
    open (FIC,"info.txt") or die "impossible d'ouvrir le fichier info.txt\n $!";
    while ( my $ligne = <FIC> ){
    	$text = $text . $ligne;
    }
    close FIC;
     if ( -s "info.txt")
    {
    my $message = $text . "\n\n\Ci-dessus les infos !";
     }
    else
    {
    my $message = "\n\n\pas d'info joyeux noël !";
    }
    my $msg = MIME::Lite->new(
    	From 		=> 'xxxxxxxxxxxxxx@free.fr',
    	To		=> 'xxxxxxxxxxxxxx@yahoo.fr',
    	Subject      => 'Perso',
    	Type         => 'TEXT',
    	Data 		=> $message,
    	Filename     => "FichierResultat.txt",
    );
     
    $msg->send('smtp','smtp.orange.fr', Debug=>1, Timeout => 5 );

  6. #46
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Ben oui là de suite c'est plus clair

    Y peu pas comprendre les cotes font que $message n'est plus une variable mais une constante...

    le code doit être :

    Faut pas tricher aussi avec [EDIT] quand on modifie il faut le préciser
    Car en plus dans la précipitation vous avez édité le mien

  7. #47
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    je me suis trompé en fait j'ai mis '$message' du coup il envoie le mail avec le message $message

    quand je mets tout simplement $message il y a ça comme message d'erreur

    Unrecognized escape \C passed through at ./mail.pl line 19.
    Unrecognized escape \i passed through at ./mail.pl line 22.
    Global symbol "$message" requires explicit package name at ./mail.pl line 32.
    Execution of ./mail.pl aborted due to compilation errors

    EDIT : je pense comme vous avez dit la variable n'est pas accessible à l'extérieur de la boucle

  8. #48
    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
    @SNTP2014: force-toi à indenter ton code correctement, tu ne peux pas imaginer à quel point ça aide pour écrire du code correct et éviter d'interminables séances de "débogage".

    Pour moi, il n'y a aucune excuse pour écrire quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if ( -s "info.txt")
    {
    my $message = $text . "\n\n\Ci-dessus les infos !";
     }
    else
    {
    my $message = "\n\n\pas d'info joyeux noël !";
    }

  9. #49
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    il y a quoi comme erreur dans le code ? pour profiter de votre compétence et pour que tout le monde puisse bénéficier de ce post

  10. #50
    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
    Il n'y a pas d'erreur, je parlais juste d'indentation, c'est-à-dire de présentation du code. Il est d'usage que tout bloc du code dépendant d'une instruction de contrôle (telle que while, if, else, until, for, sub, etc.) soit présenté en retrait de façon à bien visualiser d'un seul coup d’œil l'étendue du bloc. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( -s "info.txt")
    {
         my $message = $text . "\n\n\Ci-dessus les infos !";
    }
    else
    {
         my $message = "\n\n\pas d'info joyeux noël !";
    }
    On peut préférer un autre style d'indentation, comme par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ( -s "info.txt") {
         my $message = $text . "\n\n\Ci-dessus les infos !";
    } else {
         my $message = "\n\n\pas d'info joyeux noël !";
    }
    Le style d'indentation choisi n'a pas beaucoup d'importance, il faut juste essayer d'être cohérent. Et essayer d'utiliser un nombre de caractères d'indentation cohérent.

    Tout cela ne change rien au fonctionnement du programme, surtout sur six lignes de code, mais ça rend l'intention du développeur beaucoup plus claire. Et, même sur un programme de seulement 30 lignes, ça fait toute la différence entre du code clair et du code parfaitement illisible. Et entre du code sans bug ou facile à débuguer, et du code bugué et impossible à comprendre et donc à débuguer.

    Je ne connais aucun développeur un tant soit peu expérimenté qui ne se conforme pas soigneusement à ces règles. Certains langages de programmation (comme Python) imposent même l'indentation cohérente du code. Crois-moi, même si ça ne te paraît pas avoir d'importance pour du code aussi court, cela te fera gagner des heures de travail de débugage. Fais-le, même pour dix lignes de code provisoire dont tu ne te serviras que pendant 30 minutes. Tu seras gagnant.

    D'ailleurs, dmganges avait bien écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ( -s "/tmp/info.txt" ) {
    	my $message = "\n\n\Ci-dessous les info :\n\nBonne reception";
    } else {
    	my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    }
    Ce n'est pas pour rien qu'il l'a fait.

    Perso, je n'embaucherais simplement pas un développeur dont j'aurais vu ne serait-ce que quelques lignes de code récentes mal indentées (quel que soit le langage), étant entendu que je ne parle pas du style d'indentation, mais du fait d'indenter ou non tout bloc de code dépendant d'une instruction de contrôle.

  11. #51
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre conseil pertinent.

    Toujours le même problème et je pense que je pense la variable n'est pas accessible à l'extérieur de la boucle parce que le programme se bloque là : data ==> $message

  12. #52
    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 n'utilise pas ce module, mais

    n'est certainement pas correct. Essaie:


  13. #53
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    pareil :s même problème

    Citation Envoyé par Lolo78 Voir le message
    Je n'utilise pas ce module, mais

    n'est certainement pas correct. Essaie:


    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use MIME::Lite;
     
    my $text = "Bonjour,\n\nCi-dessous les infos :\nBonne reception !\n\n";
    open (FIC,"info.txt") or die "impossible d'ouvrir le fichier info.txt\n $!";
    while ( my $ligne = <FIC> ){
    	$text = $text . $ligne;
    }
    close FIC;
    if ( -s "/tmp/info.txt" ) {
    	my $message = "\n\n\Ci-dessous les info :\n\nBonne reception";
    } else {
    	my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    }
    my $msg = MIME::Lite->new(
    	From 		=> 'xxxxxxxxxxxxxx@free.fr',
    	To		=> 'xxxxxxxxxxxxxx@yahoo.fr',
    	Subject      => 'Perso',
    	Type         => 'TEXT',
    	Data 		=> $message,
    	Filename     => "FichierResultat.txt",
    );
     
    $msg->send('smtp','smtp.orange.fr', Debug=>1, Timeout => 5 );
    Est ce que on peut utiliser une variable en dehors de la condition parce que quend j'enléve la boucle if -s ça remarche et quand je remets la boucle data => $message ne marche pas.

  14. #54
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Il y a une différence de comportement du module suivant que l'on envoi des fichier .txt ou xsl !

    Donc il faudra que tu répondes à nos questions !
    Avec un fichier .txt ceci fonctionne :
    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 MIME::Lite;
     
    my $message = "";
    if (-s "info.txt" ) {
    	$message = "\n\nCi-dessous les info :\n\nBonne reception";
    } else {
    	$message = "\n\nPas d'information !\n\nJoyeux Noël !";
    }
    my $msg = MIME::Lite->new(
    	From 		=> 'xxx@free.fr',
    	To		=> 'xxx@yahoo.fr;dmganges@free.fr',
    	Subject => 'Fichier txt joint',
    	Type    => 'TEXT',
    	Data 		=> $message,
    );
    =pod
    $msg->attach(
       Type => "application/msexcel",
       Id   => 'info.xls',
       Path => 'info.xls',
    );
    =cut
     
    $msg->attach(
       Type => "TEXT",
       Id   => 'info.txt',
       Path => 'info.txt',
    );
     
    $msg->send('smtp','smtp.orange.fr', Debug=>0, Timeout => 5 );
    J'ai mis en commentaire pour l'envoi d'un fichier .xsl !

    Le module ne sait pas envoyer un fichier .xsl vide, pour lui un .xsl vide c'est un fichier corrompu !

    Si tu envoies un fichier .xsl il faudra tester sur sa présence ou non ...

    Qu'envoies-tu comme fichier ?

  15. #55
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    C'est un fichier TXT

    le dernier code envoie un mail vide parce que le $message ="": est vide.

    lorsque j'essaye d'envoyer un mail avec la boucle if -s l'envoie se bloque , le probléme vient du data=> $message

    Message d'erreur : Global symbol "$message" requires explicit package name at ./mail.pl line 20.
    Execution of ./mail.pl aborted due to compilation errors.

    ligne 20 = data => $message

    Edit : Voici le code j'envoie juste le contenu du fichier et pas une pièces jointe .
    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
     
     
    #!/usr/bin/perl
    use strict;
    use warnings;
    use MIME::Lite;
     
    my $text = "Bonjour,\n\nCi-dessous les infos :\nBonne reception !\n\n";
    open (FIC,"info.txt") or die "impossible d'ouvrir le fichier info.txt\n $!";
    while ( my $ligne = <FIC> ){
    	$text = $text . $ligne;
    }
    close FIC;
    if ( -s "/tmp/info.txt" ) {
    	my $message = "\n\n\Ci-dessous les info :\n\nBonne reception";
    } else {
    	my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    }
    my $msg = MIME::Lite->new(
    	From 		=> 'xxxxxxxxxxxxxx@free.fr',
    	To		=> 'xxxxxxxxxxxxxx@yahoo.fr',
    	Subject      => 'Perso',
    	Type         => 'TEXT',
    	Data 		=> $message,
    	Filename     => "FichierResultat.txt",
    );
     
    $msg->send('smtp','smtp.orange.fr', Debug=>1, Timeout => 5 );

  16. #56
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    ONveut voir la totalité du code !

  17. #57
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    le voilà :
    j'envoie juste le contenu du fichier et pas une pièces jointe
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use MIME::Lite;
     
    my $text = "Bonjour,\n\nCi-dessous les infos :\nBonne reception !\n\n";
    open (FIC,"info.txt") or die "impossible d'ouvrir le fichier info.txt\n $!";
    while ( my $ligne = <FIC> ){
    	$text = $text . $ligne;
    }
    close FIC;
    if ( -s "/tmp/info.txt" ) {
    	my $message = "\n\n\Ci-dessous les info :\n\nBonne reception";
    } else {
    	my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    }
    my $msg = MIME::Lite->new(
    	From 		=> 'xxxxxxxxxxxxxx@free.fr',
    	To		=> 'xxxxxxxxxxxxxx@yahoo.fr',
    	Subject      => 'Perso',
    	Type         => 'TEXT',
    	Data 		=> $message,
    	Filename     => "FichierResultat.txt",
    );
     
    $msg->send('smtp','smtp.orange.fr', Debug=>1, Timeout => 5 );
    Citation Envoyé par dmganges Voir le message
    ONveut voir la totalité du code !
    EDIT : l'erreur exact c'est ça :
    le 2 éme my $message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $message = "\n\n\Pas d'information !\n\nJoyeux Noël !";
    et l'envoie se bloque :


  18. #58
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Ceci fonctionne :

    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use MIME::Lite;
     
    my $text = "Bonjour,\n\nCi-dessous les infos :\nBonne reception !\n\n";
    open (FIC,"info.txt") or die "impossible d'ouvrir le fichier info.txt\n $!";
    while ( my $ligne = <FIC> ){
    	$text = $text . $ligne;
    }
    close FIC;
     
    my $message = "";
    if ( -s "info.txt" ) {
    	$message = "\n\nCi-dessous les info :\n\nBonne reception";
    } else {
    	$message = "\n\nPas d'information !\n\nJoyeux Noël !";
    }
    my $msg = MIME::Lite->new(
    	From			=> 'xxx@free.fr',
    	To				=> 'xxx@yahoo.fr',
    	Subject		=> 'Perso',
    	Type			=> 'TEXT',
    	Data			=> $message,
    	Filename	=> "FichierResultat.txt",
    );
     
    $msg->send('smtp','smtp.orange.fr', Debug=>0, Timeout => 5 );

    Il fallait déclarer la variable $message en dehors des if, sinon comme précisé ci-dessus cette variable n'est pas visible par le reste du programme !

  19. #59
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    cela envoie un mail vide il prend pas en considération la boucle

  20. #60
    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
    Deux ou trois trucs qui m'interpellent.

    D'une part tu ouvres un fichier "info.txt" et copies son contenu dans la variable $text, mais tu ne sembles pas utiliser la variable $text par la suite.

    Ensuite, tu testes l'existence et la taille du fichier "/tmp/info.txt" (a priori un autre chemin et, donc, un autre fichier), mais ne sembles pas t'en servir non plus.

    Enfin, tu utilises le fichier "FichierResultat.txt", dont on ne sait pas trop d'où il vient.

    Bref, encore une fois, je ne connais pas le module, mais j'ai l'impression qu'il y a des incohérences dans tes noms de fichiers et de variables.

Discussions similaires

  1. Exécution d'un script shell sous perl
    Par ysahel dans le forum Langage
    Réponses: 1
    Dernier message: 12/08/2012, 10h39
  2. Script shell ou perl
    Par Jinkas dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 24/12/2010, 08h01
  3. écrire dans un script shell depuis perl
    Par painouch21 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2008, 14h03
  4. Traduction script Korn shell en perl
    Par olemoine dans le forum Linux
    Réponses: 4
    Dernier message: 07/02/2008, 11h13
  5. [HTML & PERL] Appel d'un script shell
    Par mevardy dans le forum Web
    Réponses: 1
    Dernier message: 30/08/2006, 10h17

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