目錄

名稱

Internals - 為內部相關函數保留的特殊命名空間

語法

$is_ro= Internals::SvREADONLY($x)
$refcnt= Internals::SvREFCNT($x)
hv_clear_placeholders(%hash);

說明

Internals 命名空間由 Perl 核心開發團隊使用,用於公開某些低階內部常式以進行測試和其他目的。

理論上,這些常式並非且不打算在 perl 核心之外使用,並且隨時可能變更和移除。

實際上,儘管過去未有文件記載,但多年來人們已經依賴這些常式,因此我們將在一段時間內提供一定程度的前向相容性。不過,您可以假設這裡記載的任何常式都是實驗性質或已棄用,您應該找到其他替代方案。

函數

SvREFCNT(THING [, $value])

過去,Perl 一直是一種參考計數語言。這表示每個變數都會追蹤有多少項目參照它,並且當不再參照變數時,它將自動釋放自己。理論上,Perl 程式碼不應該在意這一點,並且在未來的版本中,Perl 可能會變更為其他策略,儘管實際上不太可能發生這種情況。

這個函數允許人們違反變數的抽象,並取得或設定變數的參考計數,而且通常只有在測試參考計數行為的程式碼中才真正有用。

*注意* 強烈建議您不要在非測試程式碼中使用這個函數,尤其不建議使用這個函數的設定形式。這樣做的結果可能會導致區段錯誤或其他未定義的行為。

SvREADONLY(THING, [, $value])

設定或取得變數是否為唯讀。唯讀標記的實際意義取決於受影響變數的類型和使用的 perl 版本。

強烈建議不要直接使用此函式。此函式由各種核心模組使用,例如 Hash::Utilconstant pragma,用於實作較高層級的行為,應改用這些行為。

請參閱核心實作,了解每種內部變數類型的唯讀標記的精確意義。

hv_clear_placeholders(%hash)

清除鎖定雜湊中的所有佔位符。不應直接使用。您應該改用 Hash::Util 提供的包裝函式。從 5.25 版開始,也可以用作 Hash::Util::_clear_placeholders(%hash)

AUTHOR

Perl 核心開發團隊。

SEE ALSO

perlguts Hash::Util constant universal.c