使用keys %::
获取当前加载的根命名空间列表时,默认情况下会加载Internals::
包(以及UNIVERSAL::
和其他一些包)。但是,我没有在Internals::
keys %{Internals::}
返回SvREFCNT hv_clear_placeholders hash_seed SvREADONLY HvREHASH rehash_seed
所有这些都可以在Perl的C API文档中查找,但是有没有针对它们的Perl级别文档?包装稳定吗?它被几个核心模块(Hash::Util
用于一个)使用,所以我想是这样,但缺乏文档有点令人不安。
我没有在Perl发行版中看到Internals.pm
(可能是不同的名字?),而且它不是CPAN上的Internals
模块。
注意:我完全理解Internals::
中的功能具有潜在的危险性,我没有任何特别的用途。我正在阅读Hash::Util
的来源并发现它。
答案 0 :(得分:5)
IIRC代码不是Internals.pm而是libinternals.c。看起来他们曾经在universal.c in Perl 5.8但已迁出。
根据03/2009和Perl 5.10,它们没有按this perlmonks thread记录。
此外,在同一个帖子中,ysth表示:
universal.c中的未记载的东西 不应该依赖;他们应该 仅供核心模块使用。他们 是不是故意记录,允许 随时随地改变它们 但是必要的。出于这些目的, 代码是足够好的文档。