Hello,
voila je suis occuper à créer un programme qui parse pas mal de ligne dans un fichier.
il effectue des actions chaque ligne dans différents modules que je charge en fonction d'un fichier de configuration.
pour l'appel des fonction , j'utilise un eval($NomdeFct.'()')
je trouve pas ca fort propre, de plus, ce code rallenti beaucoup ( plus de 2X) le code...
y'aurai t-il pas un moyen plus élégant et surtout plus rapide d'executer des fonctions dont on connait le nom que de part un fichier de config.
Merci pour votre aide!
# TIMTOWTDI
Posté par Mouns (site web personnel) . Évalué à 3.
- une table de hachage qui contient en clé le nom de la sub et en valeur une reference sur une sub anonyme
- l'import directement dans l'espace de perl de la dite sub
pour ces deux cas, tu peux faire un truc avec 1 seul eval à l'importation, pleins de eval a chaque appel.
le principe du 1 seul eval à l'import peut se resoudre encore une fois de plein de maniere differente ... la plus évidente et sans finesse perl ( peu performante mais qui a le merite d'etre clair ) :
- tu lis le fichier contenant ton source perl
- tu en fais un eval
si par hasard, tu lis la doc perl, tu verras qu'il a deux fonctions largement optimisé qui fait cela à l'execution do et require .
maintenant, n'oublie pas que toute sub que tu as deja importé par require / do / use est directement appelable par appel indirect de fonction grace à &{$nom_de_la_sub} ou $nom_de_la_sub() .
si tu veux controler un minimum, tu fais l'appel en passant par un code de verification de la chaine contenant le nom de la sub a éxecuter.
[^] # Re: TIMTOWTDI
Posté par eMerzh (site web personnel) . Évalué à 1.
je croi que je vais lire le fichier , faire les eval et stocker les référence à appeler en temps voulu...
merci beaucoup :)
# Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.