commit() と rollback() を自動的にサポートする API を構築しようとしています。調査の結果、使用することが最善の方法であることがわかりましたeval {}
。
何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);
}
問題は、API に がなくても、@functions
内で関数を実行できるかどうかです。そうでない場合、ポインターがメモリ内の既知の関数を指すことを考えると、配列の代わりに配列参照を使用すれば可能でしょうか?OSA::ourAPI
use OSA::SQL
注: これは、より複雑な最終バージョンの基にしたい基本的な考え方です。