使用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的资料并偶然发现。

最佳答案

IIRC的代码不是Internals.pm,而是libinternals.c。看起来他们曾经在universal.c in Perl 5.8中,但被迁移了出去。

根据03/2009和Perl 5.10,未按照this perlmonks thread进行记录。

同样,在同一线程中,ysth指出:


Universal.c中未记录的东西
不应该依赖;他们应该
仅由核心模块使用。他们
没有故意记录下来,以允许
他们随时随地都要改变
但是有必要。为此目的,
该代码是足够好的文档。

08-28 09:49