加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

你可以在Perl中引用一个内置函数吗?

发布时间:2020-12-15 21:13:01 所属栏目:大数据 来源:网络整理
导读:什么语法(如果有的话)能够引用一个内置的转换? $shift_ref = $your_magic_syntax_here; 与用户定义的子文件相同: sub test { ... }$test_ref = test; 我尝试过以下操作,这些都不行: shiftCORE::shift{'shift'}{'CORE::shift'} 你的答案可以包括XS,如
什么语法(如果有的话)能够引用一个内置的转换?
$shift_ref = $your_magic_syntax_here;

与用户定义的子文件相同:

sub test { ... }

$test_ref = &;test;

我尝试过以下操作,这些都不行:

&;shift
&;CORE::shift
&;{'shift'}
&;{'CORE::shift'}

你的答案可以包括XS,如果需要,但我不喜欢.

澄清:我正在寻找一个通用解决方案,可以从任何内置函数获取功能完整的代码参考.然后,该代码可以传递给任何更高阶的函数,就像对用户定义的子代的引用一样.到目前为止,这是不可能的共识,任何人都不同意?

解决方法

不,你不行你要解决的根本问题是什么?可能有一些办法可以做到这一点.

再加上这个问题的一部分“你的答案可以包括XS,但我不喜欢”.
从XS调用内置函数是非常困难的,因为内置函数被设置为假定它们作为编译的optree的一部分运行,并且设置了一些全局变量.通常,调用内置函数本身所使用的一些基础函数要容易得多,虽然并不总是有这样的功能,

buffer = sv_2mortal(newSVpvf("(caller(%d))[3]",(int) frame));
caller = eval_pv(SvPV_nolen(buffer),1);

(从XS做一个字符串eval,而不是通过直接调用pp_caller所需的环).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读