Je ne sais pas si je poste au bon endroit, ce n’est pas tout à fait de la programmation, mais c’est la section qui m’a parue la plus adaptée à mon problème.
Il faut que je crée une mailing list pour une asso.Je dispose pour cela de plusieurs fichiers d’adhérents (fichiers_adherent_global et fichier_adherent_courant) sous cette forme :
"Noms1";"Prenoms1";"mail1"
"Noms2";"Prenoms2";"mail2"
...
"NomsN";"PrenomsN";"mailN"
Sachant que certaines lignes ne comportent pas de mail, je dois créer une mailing list de tous les adhérents moins ceux de l’année en cours.Là où ça coince c’est que nous avons environ 130 à 150 adhérents chaques années, je me vois mal faire tous ça à la main et c’est d’ailleurs pour cette raison que je me suis proposé de faire ce boulot : je me suis dis que des outils tel que grep awk sed ou autres pouvaient m’aider dans cette tache longue et fastidieuse.Seulement après avoir lu et relu les différentes manpages j’ai du me rendre à l’évidence : l’exercice est trop dur pour moi qui n’a jamais u à utiliser ces outils.
C’est pourquoi je m’en remet à vous.Je ne sais pas comment je dois m’y prendre.Si quelqu’un parmi vous pouvait m’aider ce serait très sympa car comme je l’ai dis je me vois mal vérifier tout seul près de 600 entrées
En fait j’ai un fichiers avec tous les adhérents depuis plusieurs années (fichier1), à cela s’ajoute un autre fichiers contenant les adhérents de l’année en cours (fichier2).Le but étant d’envoyer un mail à tous ceux qui ne sont plus adhérents (les mails du fichier1 moins les mails du fichier2).L’idéal serait d’envoyer le résultat dans un fichiers de cette forme:mail1;mail2;mail3;...;mailN
Bon j’ai testé en vitesse et ça ne marche pas trop Le fichier de sortie est vide et il me sors une série d’erreurs
Use of uninitialized value in substitution (s///) at ./make_mailing_list.perl line 17, <FILE1> line 5.
Use of uninitialized value in substitution (s///) at ./make_mailing_list.perl line 17, <FILE1> line 15.
Use of uninitialized value in substitution (s///) at ./make_mailing_list.perl line 17, <FILE1> line 21.
Use of uninitialized value in substitution (s///) at ./make_mailing_list.perl line 27, <FILE2> line 117.
Use of uninitialized value in string eq at ./make_mailing_list.perl line 38.
Sachant qu’il me sors la dernière ligne autant de fois qu’il y a de mail (en tout cas ça y ressemble)
Pour les 4 premières je ne sais pas trop d’où vient le problème.J’ai regardé pour la dernière et il m’a semblé qu’il manquait un “s” à la ligne 38.J’ai remplacé if ($mail1 eq $_)
par
if ($mails1 eq $_)
Seulement quand je le lance j’ai cette erreur
Global symbol "$mails1" requires explicit package name at ./make_mailing_list.perl line 38.
Execution of ./make_mailing_list.perl aborted due to compilation errors.
Je suis loin d’être un spécialiste en perl (ou en tout autre langage) mais je pense au moins avoir compris que la manip que j’ai faite loin d’etre bonne, du coup j’ai remis les choses en états…Au moins le script se lance
Merci beaucoup pour ton aide
Toutes mes excuses effectivement ton script marche tres bien.Je ne sais pas comment je me suis débrouillé hier soir mais ça ne voulais pas fonctionner.
Sinon fran.b ta méthode fonctionne aussi mais elle me sors un mail par ligne.Enfin c’est pas trop génant puisque de toutes façon j’ai ma mailing list.
Je vais quand même essayer de refaire tout ça moi-même, ça me fera un petit exercice
Peut etre parce que ce langage est trop permissif?(enfin il parait j’y connais rien à la programmation)
Sinon je vais regarder ton script, il a l’air lisible et je pense qu’avec une doc sur le perl j’arriverai à comprendre comment tu as raisonné (c’est surtout ça qu’il me manque:l’algorithmique).