documentation in Perl 6 programs, using the Pod 6 DSL, are actually parsed as part of the code ;这使得该文档在程序内部可用,如 $=pod
多变的。
但是,我想访问该变量,以便从测试中处理它。在 this example I wrote for the Perl 6 Advent Calendar它只是作为类(在本例中为语法)变量导出:
our $pod = $=pod[0];
然后我可以这样使用它:
use Data::Dump;
use MONKEY-SEE-NO-EVAL;
sub MAIN( $module ) {
try require ::($module);
say Dump( $::($module)::pod, :max-recursion(2) );
}
这在使用类名和正确路径调用时有效;但它仍然需要变量的显式导出。
我在 some code 中看到过可以使用 precomp 存储(对不起,没有好的单一来源来解释这些)用于同一件事。最终,这条线
return nqp::atkey($handle.unit,'$=pod')[0];
诀窍是,访问由 precomp 存储表示并包含在
$handle.unit
中的模块的 Pod .问题是这实际上是较低级别,使用 nqp::atkey
NQP, not quite perl 的运算符(operator).有很多方法可以做到这一点,所以我可以想到两个不同的可能问题。
1.有没有办法通过FQN(前面是::)访问那个
require
的Pod d 或 use
单位?2. 我们是否可以访问
require
的预压缩句柄? d 或 use
d 单位,以便我们可以调用 nqp::atkey
直接地?
最佳答案
我使用这种技术(寻找更简单的方法)来创建 Module::Pod (即将出版)。看我的回答:https://stackoverflow.com/a/57247392/332359
关于raku - 在不显式导出的情况下获取模块的 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634257/