gpt4 book ai didi

perl - 您可以引用 Perl 中的内置函数吗?

转载 作者:行者123 更新时间:2023-12-03 22:32:11 25 4
gpt4 key购买 nike

什么语法,如果有的话,能够引用像 shift 这样的内置函数?

$shift_ref = $your_magic_syntax_here;

与您可以使用用户定义的 sub 相同的方式:
sub test { ... }

$test_ref = \&test;

我尝试了以下方法,但都不起作用:
\&shift
\&CORE::shift
\&{'shift'}
\&{'CORE::shift'}

如果需要,您的答案可以包括 XS,但我不想。

澄清:我正在寻找一种通用解决方案,可以从任何内置程序中获取功能齐全的代码引用。然后可以将此 coderef 传递给任何更高阶的函数,就像对用户定义的 sub 的引用一样。到目前为止,这似乎是不可能的共识,有人不同意吗?

最佳答案

不,你不能。你试图解决的根本问题是什么?可能有某种方法可以做任何事情。

重新添加问题“如果需要,您的答案可以包括 XS,但我不希望。”,
从 XS 调用内置函数真的很难,因为内置函数被设置为假设它们作为编译的 optree 的一部分运行并设置了一些全局变量。通常,调用内置函数本身使用的一些底层函数要容易得多,尽管并不总是有这样的函数,因此您会看到如下内容:

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

(从 XS 执行字符串 eval 而不是通过直接调用 pp_caller 所需的箍)。

关于perl - 您可以引用 Perl 中的内置函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com