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

Perl内置函数作为子例程引用

发布时间:2020-12-16 06:06:31 所属栏目:大数据 来源:网络整理
导读:我正在尝试将一组操作作为数组执行.为此,我必须传递子例程引用. (可能还有其他方法可以在不使用数组的情况下执行此操作.但是,由于某些其他限制,我觉得这是最好的. 我正在尝试做的基本示例代码: #!/usr/bin/perluse strict;use warnings;use Data::Dumper;su
我正在尝试将一组操作作为数组执行.为此,我必须传递子例程引用. (可能还有其他方法可以在不使用数组的情况下执行此操作.但是,由于某些其他限制,我觉得这是最好的.

我正在尝试做的基本示例代码:

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
sub test()
{
   print "Testedn";
}

my $test;
my  @temp = (1,2,3);
my $operations = [ 
           [&;test,undef,undef],[&;shift,$test,@temp],];

foreach(@$operations){
   my $func = shift $_;
   my $out = shift $_;
   $$out = $func->(@$_);
}

print Dumper $test;

观察到的输出是:

Tested
Undefined subroutine &main::shift called at temp2.pl line 22.

查询 – 是否可以将内置子例程作为引用传递?

已有早期查询,在here中作为子例程引用的函数内置reg.

由于问题被问了大约3年,所以想知道现在是否有任何替代方案.
如果有人解释为什么在这种情况下内置函数和用户定义的子例程之间存在区别,我将不胜感激?

解决方法

转变不是一个分;它就像一个操作符和.如果要引用sub,则需要创建sub.

[sub { shift(@{$_[0]}) },

(编辑:李大同)

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

    推荐文章
      热点阅读