在perl中,存在特殊标记,例如__PACKAGE__
,__SUB__
,__FILE__
和__LINE__
,这些标记可从脚本中获得。
我想我可能会从__PACKAGE__
中获取XS
的值作为HvNAME( PL_currstash )
。
但是如何访问别人?
是否有特殊的接口(interface)可以从XS
访问所有这些接口(interface)?像: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中那样传递上下文结构,而是一堆 Activity 上下文块。关于perl - 有没有办法从XS访问perl中的特殊 token ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45521855/