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

前端之家收集整理的这篇文章主要介绍了你可以在Perl中引用一个内置函数吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么语法(如果有的话)能够引用一个内置的转换?
$shift_ref = $your_magic_Syntax_here;

用户定义的子文件相同:@H_301_5@

sub test { ... }

$test_ref = \&test;

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

\&shift
\&CORE::shift
\&{'shift'}
\&{'CORE::shift'}

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

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

解决方法

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

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

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

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

原文链接:https://www.f2er.com/Perl/172683.html

猜你在找的Perl相关文章