Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Perl, Fichier textes, et hashes
Envoyé par: Arnaud62

Bonjour,

Please Help Me ! #%b

Pour l'historique, je souhaite mettre un système d'alerte lorsqu'un seuil qu'occupe un dossier est atteint.
Pour commencer, j'ai un fichier texte de ce type :

Taille Utilisateur
9899898 298934
9293 298935
90 298936


Les séparateurs sont des tabulations.
La première ligne d'en tete est retiréé du fichier texte.

Je souhaite intégrer ces données dans un tableau associatif.

Par la suite, je pourrais faire le traitement de ce tableau.
Récupérer ceux qui dépassent le seuil. Leur envoyer un mail automatique ... etc.

Ma première étape (bloquante) est de mettre ces données dans le tableau.
Je débute en perl et ai du mal à maitriser les fichier, boucle et tableau associatif.

Merci.

Poste le Monday 31 December 2007 16:15:45
Répondre     Citer    
Re: Perl, Fichier textes, et hashes

Je connais mal Perl, mais puisque tu débutes j'aurais tendance à te conseiller un langage mieux structuré comme Ruby ou peut-être Ocaml.

Perl est vraiement bidulique, et dans le genre des langages de script, on a fait des progrès depuis, et ces progrès sont significatifs.



----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Monday 31 December 2007 16:53:19
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: Arnaud62

Mais dans mon cas, je n'ai pas le choix du langage ... :-/

Poste le Monday 31 December 2007 16:54:29
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: PlainStupidPenguin

Salut,

Citation
Basile STARYNKEVITCH
Perl est vraiement bidulique, et dans le genre des langages de script, on a fait des progrès depuis, et ces progrès sont significatifs
Ça c'est franchement du troll moisi façon Roquefort oublié dans le panier à pique-nique. Perl est un langage de script performant et expressif qui n'a rien à envier à ses petits camarades (à part peut-être le modèle objet qui est peut-être un peu moins mignon). Et pour les tâches d'administration, je le trouve particulièrement indiqué, puisqu'il a précisément été conçu pour allier la puissance du C à la souplesse du shell.

Et au passage, conseiller Ocaml, faut le faire. Je crois qu'il y a peu de langages qui soit aussi difficiles à apprendre en autodidacte tant la documentation est rare (inexistante même, si on retire celle dédiée aux matheux, dépourvue d'application pratique).

Pour répondre à la demande d'Arnaud, voilà ce qu'on pourrait imaginer (mais je ne suis pas expert en Perl non plus) :

my ($fichier, $seuil, %taille) = ("/tmp/exemple", 10000);
open F, "<" . $fichier or die "Ne peut ouvrir $fichier.\n";
while (<F>) {
    $taille{$2} = $1 if m/^([0-9]+)\t([0-9]+)/;
}
close F;
for (keys %taille) {
    print "L'utilisateur '$_' dépasse le quota ($seuil).\n" if $taille{$_} > $seuil;
}

Je te conseille de tenter de comprendre ce qui se fait dans ce script à l'aide de ce bon tutoriel d'intro (mes 2¢).

Poste le Monday 31 December 2007 17:35:59
Répondre     Citer    
Re: Perl, Fichier textes, et hashes

Je connais plusieurs excellents livres (en français chez Oreilly, ou en anglais ailleurs) sur Ocaml (et sur Ruby).

Et je maintiens que la sémantique de Perl est mal définie (et probablement non formalisable dans les cadres que je connais : sémantique dénotationnelle ou opérationnelle...).

D'ailleurs, ce n'est pas pour rien que des boites comme Mandriva codent leurs scripts récents en autre chose que Perl (mais pas en Ocaml, j'en conviens). Il me semble par exemple que Pulse est codé en Ruby ou Python.

Je reste donc sur mon conseil d'éviter Perl. Sa principale richesse a été d'interfacer plein de fonctions utiles, et il a largement été rattrapé là dessus! Il y a mieux...
Mais c'est vrai que Perl a été très largement utilisé!


----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Monday 31 December 2007 17:50:30
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: Arnaud62

Merci Basile.
Mais je vous demanderais de ne pas débattre des différents langages de programmation.
Je n'ai pas ouvert ce post pour cette raison.

Je testerais plus tard la solution de PlainStupidPenguin qui peut me donner une piste.
Je donnerais des infos sur les résultats dans la semaine.

Merci.

Poste le Monday 31 December 2007 17:57:34
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: AlSim

La philosophie de Perl, c'est There Is More Than One Way To Do It : il permet plusieurs syntaxes différentes pour une même action (inspirées de langages différents). Ça ne veut pas dire qu'il faut tout mélanger, sinon ça devient illisible.

On peut écrire du Perl très propre et compréhensible, mais c'est certain que ce n'est pas un bon langage pour apprendre la programmation, parce qu'en Perl ce n'est certainement pas parce que quelque chose marche que c'est bien écrit.

Ceci dit, faire de l'ocaml (un langage entre le fonctionnel et l'objet) ne me parait pas être une super manière de débuter non plus...

Pour en revenir à Perl, c'est un excellent langage de script pour faire du traitement de texte, et ce n'est pas pour rien qu'on trouve des "Perl Compatible Regular Expressions" un peu partout. C'est aussi un langae sympathique en CGI pour le web. Sa syntaxe brouillonne devrait être corrigée par Perl6, et il devrait se doter d'une meilleure gestion de l'objet. Enfin c'est le seul langage que je connaisse qui permette d'émuler facilement toutes les commandes Unix ou presque par un uniligne. Donc oui, laissez-lui une chance, mais après avoir appris autre chose de préférence. smiling smiley

[catwell.info]

Poste le Monday 31 December 2007 18:13:15
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: Arnaud62

Ton bout de code fonctionne parfaitement PlainStupidPenguin !
Merci bien.

Maintenant j'attaque la suite. Trouver comment envoyer un mail a l'adresse "$_ @ mon domaine"


Poste le Thursday 3 January 2008 13:00:33
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: AlSim

Je te donne la première ligne :

use Mail:confused smileyendmail;

}-)

[catwell.info]

Poste le Thursday 3 January 2008 13:52:59
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: Arnaud62

Cela me renvoie :

Can't locate Mail/Sendmail.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./BAL_limit_alert.pl line 6.
BEGIN failed--compilation aborted at ./BAL_limit_alert.pl line 6.
:-o
Ligne 6 c'est :
u
se Mail:confused smileyendmail;

Poste le Thursday 3 January 2008 15:03:40
Répondre     Citer    
Re: Perl, Fichier textes, et hashes
Envoyé par: AlSim

Ce qui veut dire que tu dois commencer par installer le module en question, qui se trouve (ainsi que sa doc) ici : [search.cpan.org]

[catwell.info]

Poste le Thursday 3 January 2008 17:54:52
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Perl, Fichier textes, et hashes
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons