在 perl 中的特殊标记,如 __PACKAGE__
, __SUB__
, __FILE__
, __LINE__
存在并可从脚本中获得。
我可能会得到 __PACKAGE__
的值来自 XS
如HvNAME( PL_currstash )
, 我想。
但是如何访问其他人?
是否有特殊的接口(interface)可以从 XS
访问所有这些? ?喜欢:CTX->package
, CTX->sub
等等
最佳答案
您可以在 toke.c
中一一查找对于编译时值:
__PACKAGE__
=> HvNAME(PL_curstash)
或 PL_curstname
__FILE__
=> CopFILE(PL_curcop)
(编译时)__LINE__
=> CopLINE(PL_curcop)
(编译时)__SUB__
=> PL_compcv
如果您在运行时需要它们,请查看上下文中可用的各种数据字段
caller_cx
和当前子 (cv
)。没有在 parrot 或 perl6 中传递的上下文结构,而是一堆事件的上下文 block 。
关于perl - 有没有办法从 XS 访问 perl 中的特殊标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42629915/