Nous essayons de créer une API pour prendre automatiquement en charge commit() et rollback(), afin que nous n'ayons plus à nous en préoccuper. En recherchant, nous avons trouvé que l'utilisation de eval {}
est la voie à suivre. Pour savoir quoi faire, j'ai pensé à donner à l'API un tableau de fonctions, qu'il peut exécuter avec un foreach
sans que l'API n'ait à interpréter quoi que ce soit. Toutefois, cette fonction peut être dans un package différent.A propos de l'utilisation d'un tableau de fonctions en Perl
Permettez-moi de préciser un exemple:
sub handler {
use OSA::SQL;
use OSA::ourAPI;
my @functions =();
push(@functions, OSA::SQL->add_page($date, $stuff, $foo, $bar));
my $API = OSA::ourAPI->connect();
$API->exec_multi(@functions);
}
La question est la suivante: Est-il possible d'exécuter les fonctions @functions
à l'intérieur de OSA::ourAPI
, même si ourAPI n'a pas use OSA::SQL
. Sinon, serait-ce possible si j'utilise une référence de tableau au lieu d'un tableau, étant donné que le pointeur pointe vers la fonction connue à l'intérieur de la mémoire?
Note: C'est l'idée de base sur laquelle nous voulons baser la version finale plus complexe.
Je ne comprends pas ce que vous entendez par "exécuter les fonctions données dans OSA :: notreAPI". – cjm
J'ai édité ma question pour clarifier. Les fonctions à l'intérieur de @functions sont celles dont je parle. – Mike
'eval' est rarement le chemin à parcourir ... et mettre une instruction' use' dans une méthode ne retardera pas son exécution à l'exécution de la méthode. Il est exécuté immédiatement lorsque le fichier est analysé. – Ether