autodie::Util - autodie 和 Fatal 的內部實用程式子例程
# INTERNAL API for autodie and Fatal only!
use autodie::Util qw(on_end_of_compile_scope);
on_end_of_compile_scope(sub { print "Hallo world\n"; });
autodie 和 Fatal 的內部實用程式!此模組不屬於 autodie 的公共 API。
此模組包含用於抽象化 autodie 的底層魔法和對 %^H
在 (編譯時) 作用域結束時調用子例程的 (濫用) 的實用程式子例程。
請注意,由於 %^H
的工作方式,這些實用程式的一些只在 perl 模組的編譯階段有用,並且依賴於 perl 如何處理在 %^H
中的引用的內部。
on_end_of_compile_scope(sub { print "Hallo world\n"; });
將在 (編譯時) 作用域結束時調用子例程。該子例程不帶任何參數被調用一次。可以多次調用(甚至在同一個 "編譯時" 作用域內)來安裝多個子例程。子例程按照 "先進後出"(FILO 或 "堆疊")的順序呼叫。
fill_protos('*$$;$@')
給定 Perl 子例程原型,返回一個調用規範列表。每個規範都是一個列表參考,其中第一個成員是此調用規範所需的(最小)參數數量。其餘的參數是如何正確傳遞給具有給定原型的子例程的字串表示,當具有給定參數數量時呼叫。
規範按照從 0 開始的參數增加的
make_core_trampoline('CORE::open', 'main', prototype('CORE::open'))
建立一個用於調用核心子程序的蹦床。基本上,這是一個小型子程序,負責確定我們應該如何調用我們的核心子程序,以正確的方式放入參數,並將我們的控制轉移到它。
如果我們能夠可靠地在核心內置函數上使用 `goto &`,我們就不需要這個子程序。
install_subs('My::Module', { 'read' => sub { die("Hallo\n"), ... }})
給定一個套件名稱和一個將名稱映射到子程序引用(或 undef
)的哈希引用,此子程序將在該模塊中安裝所述的子程序。如果一個名稱映射到 undef
,則目標模塊中具有該名稱的任何子程序將被刪除(可能會“取消遮蔽”同名的 CORE 子程序)。
版權所有 2013-2014,Niels Thykier <niels@thykier.net>
此模塊是自由軟件。您可以按照與 Perl 本身相同的條款進行分發。