内容

名称

内部 - 为内部相关函数保留的特殊命名空间

概要

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

描述

内部命名空间由 Perl 核心开发团队使用,用于公开某些低级内部例程,用于测试和其他目的。

理论上,这些例程不打算在 Perl 核心之外使用,并且随时可能更改或删除。

实际上,人们多年来一直依赖这些例程,尽管它们在历史上没有文档记录,因此我们将提供一定程度的向前兼容性,以供将来使用。但是,您可以假设此处记录的任何例程都是实验性的或已弃用的,您应该找到替代方法来使用它们。

函数

SvREFCNT(THING [, $value])

历史上,Perl 是一种引用计数语言。这意味着每个变量都会跟踪有多少东西引用它,当变量不再被引用时,它会自动释放自己。理论上,Perl 代码不应该关心这一点,在未来的版本中,Perl 可能会改变为其他策略,尽管实际上这不太可能。

此函数允许您违反变量的抽象,获取或设置变量的引用计数,并且通常仅在测试引用计数行为的代码中才有用。

*注意* 强烈建议您不要在非测试代码中使用此函数,尤其不要使用此函数的设置形式。这样做可能会导致段错误或其他未定义的行为。

SvREADONLY(THING, [, $value])

设置或获取变量是否为只读。只读标志的具体含义取决于受影响变量的类型和使用的 Perl 版本。

强烈建议您不要直接使用此函数。它被各种核心模块(如 Hash::Utilconstant 准则)使用,以实现应该优先使用的更高级别的行为。

有关每个内部变量类型的只读标志的具体含义,请参阅核心实现。

hv_clear_placeholders(%hash)

清除锁定哈希中的所有占位符。不应直接使用。您应该使用 Hash::Util 提供的包装函数。从 5.25 开始,还可以作为 Hash::Util::_clear_placeholders(%hash) 使用

作者

Perl 核心开发团队。

另请参阅

perlguts Hash::Util constant universal.c