目錄

名稱

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

on_end_of_compile_scope(sub { print "Hallo world\n"; });

將在 (編譯時) 作用域結束時調用子例程。該子例程不帶任何參數被調用一次。可以多次調用(甚至在同一個 "編譯時" 作用域內)來安裝多個子例程。子例程按照 "先進後出"(FILO 或 "堆疊")的順序呼叫。

fill_protos

fill_protos('*$$;$@')

給定 Perl 子例程原型,返回一個調用規範列表。每個規範都是一個列表參考,其中第一個成員是此調用規範所需的(最小)參數數量。其餘的參數是如何正確傳遞給具有給定原型的子例程的字串表示,當具有給定參數數量時呼叫。

規範按照從 0 開始的參數增加的

make_core_trampoline

make_core_trampoline('CORE::open', 'main', prototype('CORE::open'))

建立一個用於調用核心子程序的蹦床。基本上,這是一個小型子程序,負責確定我們應該如何調用我們的核心子程序,以正確的方式放入參數,並將我們的控制轉移到它。

如果我們能夠可靠地在核心內置函數上使用 `goto &`,我們就不需要這個子程序。

install_subs

install_subs('My::Module', { 'read' => sub { die("Hallo\n"), ... }})

給定一個套件名稱和一個將名稱映射到子程序引用(或 undef)的哈希引用,此子程序將在該模塊中安裝所述的子程序。如果一個名稱映射到 undef,則目標模塊中具有該名稱的任何子程序將被刪除(可能會“取消遮蔽”同名的 CORE 子程序)。

AUTHOR

版權所有 2013-2014,Niels Thykier <niels@thykier.net>

LICENSE

此模塊是自由軟件。您可以按照與 Perl 本身相同的條款進行分發。