Мы пытаемся создать API для поддержки commit() и rollback() автоматически, так что нам больше не нужно его беспокоить. Исследуя, мы обнаружили, что использование eval {}
- это путь.Об использовании массива функций в Perl
eval {}
Чтобы узнать, что делать, я подумал о предоставлении API-массива функций, которые он может выполнить с помощью foreach
без API, который должен что-либо сделать. Однако эта функция может быть в другом пакете.
Поясню на примере:
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);
}
Возникает вопрос: можно ли выполнять функции в @functions
внутри OSA::ourAPI
, даже если ourAPI не имеет use OSA::SQL
. Если нет, возможно ли, если я использую ссылку на массив вместо массива, учитывая, что указатель указывает на известную функцию внутри памяти?
Примечание: Это основная идея, на которой мы хотим основать более сложную окончательную версию.
Я не понимаю, что вы подразумеваете под «выполнением заданных функций внутри OSA :: ourAPI». – cjm
Я отредактировал мой вопрос, чтобы уточнить. Функции внутри @functions - это те, о которых я говорю. – Mike
'eval' редко бывает ... и добавление оператора' use' внутри метода не задерживает его выполнение до того, как будет запущен метод. Он выполняется сразу же после анализа файла. – Ether