Discussion:
Fichier de configuration de script Perl
(trop ancien pour répondre)
Paul
2013-09-16 19:27:22 UTC
Permalink
Bonjour,

Je souhaite faire un script Perl qui devra traiter des fichiers textes :
1. parcourir le fichier ligne à ligne
2. Si une expression régulière est détecter, alors lancer un script

J'aimerai votre avis/conseil non pas pour la création de ces 2 étapes; mais plutôt pour la façon dont doivent être stockées la configuration de mon script.

Le traitement risque de durer longtemps vue la volumétrie.

En effet, j'ai l'intention d'avoir ces contraintes :
- plusieurs expressions régulières possibles
- chaque regexp pourra déclencher un ou plusieurs actions (un script externe par exemple)
- le fichier de configuration pourra être mis à jour en temps réel ; et pendant l'exécution du script Perl


Conseilleriez vous un fichier de config Xml, un .ini, un hash? ... autre...
Comment feriez-vous pour gérer cette configuration ?

Merci de votre aide.
Paul Gaborit
2013-09-16 21:54:04 UTC
Permalink
À (at) Mon, 16 Sep 2013 12:27:22 -0700 (PDT),
Post by Paul
1. parcourir le fichier ligne à ligne
2. Si une expression régulière est détecter, alors lancer un script
Bon.
Post by Paul
J'aimerai votre avis/conseil non pas pour la création de ces 2 étapes;
mais plutôt pour la façon dont doivent être stockées la configuration
de mon script.
Bon.
Post by Paul
Le traitement risque de durer longtemps vue la volumétrie.
C'est quoi longtemps ? 1 heure, 1 journée, 1 mois, 1 an... ? Que sont
les volumes ? 1, 10, 100 Go, 1, 10, 100 To... ? Combien de fichiers
sont accessibles simultanément (pour éventuellement parallèliser le
traitement) ?
Post by Paul
- plusieurs expressions régulières possibles
Pour éviter de les vérifier toutes une par une sur chaque ligne, cela
peut valoir le coup de construire une seule expression rationnelle qui
les réunira toutes avec un "ou"...
Post by Paul
- chaque regexp pourra déclencher un ou plusieurs actions (un script
externe par exemple)
Faut-il attendre la fin du processus externe pour continuer
l'exploration ? Faut-il récupérer un résultat (ou un code d'erreur
quelconque) issu de ce processus externe ? Selon les réponses, les
techniques à mettre en œuvre diffèrent...

S'il peut y avoir de nombreux processus externes lancés simultanément en
plus du traitement des fichiers à lire, souhaitez-vous contrôler la
charge de la machine ?
Post by Paul
- le fichier de configuration pourra être mis à jour en temps réel ;
et pendant l'exécution du script Perl
Ça, c'est déjà moins courant. Pour éviter de vérifier régulièrement si
le fichier de configuration à changé ou non, on préfère généralement
prévenir le processus via un signal.
Post by Paul
Conseilleriez vous un fichier de config Xml, un .ini, un hash? ... autre...
Comment feriez-vous pour gérer cette configuration ?
Franchement, la manière dont le fichier est stocké importe peu. Le mieux
consiste à choisir le meilleur compromis entre la facilité d'édition du
fichier et sa lecture par le script. Personnellement, pour un fichier
texte, j'aime bien YAML.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Nicolas George
2013-12-29 01:09:26 UTC
Permalink
Post by Paul Gaborit
Franchement, la manière dont le fichier est stocké importe peu. Le mieux
consiste à choisir le meilleur compromis entre la facilité d'édition du
fichier et sa lecture par le script. Personnellement, pour un fichier
texte, j'aime bien YAML.
Je déconseille vivement un langage où l'espacement est sensitif, surtout
pour un perliste.

Si les exigences de sécurité le permettent, faire le fichier de config en
perl soi-même est très simple et très souple.
Paul Gaborit
2013-12-29 08:37:40 UTC
Permalink
À (at) 29 Dec 2013 01:09:26 GMT,
Post by Nicolas George
Post by Paul Gaborit
Franchement, la manière dont le fichier est stocké importe peu. Le mieux
consiste à choisir le meilleur compromis entre la facilité d'édition du
fichier et sa lecture par le script. Personnellement, pour un fichier
texte, j'aime bien YAML.
Je déconseille vivement un langage où l'espacement est sensitif, surtout
pour un perliste.
Sauf qu'un fichier de configuration n'est que rarement destiné à être
écrit par le développeur. Le fait que le code soit en Perl (ou en
n'importe quoi d'autres) n'intervient donc pas dans le choix.

Pour "l'espacement sensitif", c'est une question d'habitude et
d'explications. De plus, cet aspect n'intervient que si on utilise une
hiérarchie pour ses données de configuration.
Post by Nicolas George
Si les exigences de sécurité le permettent, faire le fichier de config en
perl soi-même est très simple et très souple.
De mon point de vue, c'est bien le pire conseil qu'on puisse donner. Un
fichier de configuration en Perl implique que celui qui l'écrit connaît
Perl (et toutes ses subtilités). Comme c'est rarement le cas, c'est
prendre le risque que l'utilisateur (du fichier de configuration) écrive
n'importe quoi (ou en tous cas, pas ce qu'il croit écrire).
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Emmanuel Florac
2014-01-04 17:48:33 UTC
Permalink
Post by Nicolas George
Post by Paul Gaborit
Franchement, la manière dont le fichier est stocké importe peu. Le
mieux consiste à choisir le meilleur compromis entre la facilité
d'édition du fichier et sa lecture par le script. Personnellement, pour
un fichier texte, j'aime bien YAML.
Je déconseille vivement un langage où l'espacement est sensitif, surtout
pour un perliste.
Si les exigences de sécurité le permettent, faire le fichier de config
en perl soi-même est très simple et très souple.
Pour être à la mode, le mieux c'est encore JSON.
--
Le droit d'auteur, vraiment c'est pas possible. Un auteur n'a aucun
droit. Je n'ai aucun droit. Je n'ai que des devoirs.
Jean-Luc Godard.
Marc Espie
2013-12-29 12:49:11 UTC
Permalink
- le fichier de configuration pourra être mis à jour en temps réel ;
et pendant l'exécution du script Perl
Ça, c'est déjà moins courant. Pour éviter de vérifier réguliÚrement si
le fichier de configuration à changé ou non, on préfÚre généralement
prévenir le processus via un signal.
Traditionnellement, $SIG{HUP} d'ailleurs...
g***@gmail.com
2013-12-28 22:00:58 UTC
Permalink
Bonsoir,

Dommage de ne pas avoir de retour suite à la réponse de Paul G.
Continuer la lecture sur narkive:
Loading...