相关疑难解决方法(0)

你能在Pe​​rl中引用内置函数吗?

什么语法,如果有的话,能够引用内置的像shift

$shift_ref = $your_magic_syntax_here;
Run Code Online (Sandbox Code Playgroud)

您可以使用与用户定义的子相同的方式:

sub test { ... }

$test_ref = \&test;
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但都不起作用:

\&shift
\&CORE::shift
\&{'shift'}
\&{'CORE::shift'}
Run Code Online (Sandbox Code Playgroud)

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

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

syntax perl

14
推荐指数
1
解决办法
1275
查看次数

什么是Perl内置的运算符/函数?

我读起的Perl西蒙科泽斯并在第8章-子程序他指出,"子程序"的用户功能,同时print,open,split等是内置的运算符或函数.

这些是什么?它们是真正内置的,语言固有的特性(如C的sizeof运算符)还是它们实际上是main模块的子程序/函数?

如果他们的子程序,有while,for,unless,等也子程序?什么样的运营商+,-,eq等?

perl

14
推荐指数
2
解决办法
1552
查看次数

在Perl中,如何将打印函数分配给变量?

我需要使用变量控制打印方法

我的代码如下

#!/usr/bin/perl

# test_assign_func.pl
use strict;
use warnings;

sub echo {
   my ($string) = @_;
   print "from echo: $string\n\n";
}  

my $myprint = \&echo;
$myprint->("hello");

$myprint = \&print;
$myprint->("world");
Run Code Online (Sandbox Code Playgroud)

当我运行时,我收到以下打印函数分配错误

$ test_assign_func.pl
from echo: hello

Undefined subroutine &main::print called at test_assign_func.pl line 17.
Run Code Online (Sandbox Code Playgroud)

看起来我需要为打印函数添加命名空间前缀,但我找不到命名空间。谢谢您的任何建议!

perl namespaces

1
推荐指数
1
解决办法
288
查看次数

标签 统计

perl ×3

namespaces ×1

syntax ×1