Bonjour,
Je dois actuellement reecrire un programme perl qui fait de la traduction de format de fichier text. Seulement les regles de traduction differ en fonction des differents formats de données en entrée.
Pour cela le programme contient dans un fichier de configuration en XML les differentes regles de transformation sont sous forme de code PERL comme par exemple:
<FORMULA>my @customer_tag_tmp=split(/#/,[#e2001c]"|1|");my $quality_tmp; if (defined($customer_tag_tmp[4])) { $quality_tmp=$customer_tag_tmp[4]; } else { $quality_tmp = ""; };$quality_tmp;
</FORMULA>
[/#000ef0]
Le champ |1| est remplacer par ma variable a utilisé avant execution de la regle.
$formule =~ s/\|1\|/$data/g;
L'execution de ce code est fait par l'intermediaire de la fonction eval
$output_data = eval($formule);
Je voulais savoir, sachant que la quantité de données est assez important, si l'execution de code oar l'intermediaire de EVAL prennais du temps et chargeait le system ???
Je voulais savoir aussi, si il etait possible pour eviter d'utiliser EVAL, de crée de maniere dynamique au demarrage du programme un module PERL qui regrouperai mes differentes regles en fonctions, ces dernieres seraient appelées au lieu d'être evalué comme par exemple:
sub formula_1{
my $val = shift;
my @customer_tag_tmp=split(/#/,"$val" );
my $quality_tmp;
if (defined($customer_tag_tmp[4])) { $quality_tmp=$customer_tag_tmp[4]; } else { $quality_tmp = ""; };
return $quality_tmp;
}
Merci d'avance