在Perl中,存在像
我可以从
是否有专门的接口可以从
__PACKAGE__
、__SUB__
、__FILE__
和__LINE__
这样的特殊标记,并可从脚本中使用。我可以从
XS
中获取__PACKAGE__
的值,例如HvNAME(PL_currstash)
,但是如何访问其他的呢?是否有专门的接口可以从
XS
中访问它们?比如:CTX->package
、CTX->sub
等。
XS
机制。我想知道如何从XS
访问令牌__SUB__
。 - Eugen Konkov__LINE__
和__FILE__
会在编译时被替换。更多详情请参见此处。 - Håkon Hægland__LINE__
和__FILE__
在编译时被替换。然而,当出现die
时,您仍然应该能够获取有关行或文件的信息,因为Perl会告诉您发生在哪一行/文件。我建议您查看Perl源代码,特别是当出现die
(例如由于除以0)时会发生什么。不确定它是否会显示您要查找的内容,但这就是我会做的方式。 - Dada__FILE__
、__LINE__
存储在COP(PL_curcop
/PL_op
)中。__SUB__
可以通过OP->cv->name访问... 问题不在于如何访问这些数据,而是通过一些特殊接口来访问这些数据。 - Eugen Konkovcaller
可以实现这一点。 - ikegami