在perl中,存在特殊标记,例如__PACKAGE____SUB____FILE____LINE__,这些标记可从脚本中获得。

我想我可能会从__PACKAGE__中获取XS的值作为HvNAME( PL_currstash )
但是如何访问别人?

是否有特殊的接口(interface)可以从XS访问所有这些接口(interface)?像:CTX->packageCTX->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/

    10-12 15:34