相关:
我正在尝试将一组操作作为数组执行。为此,我必须传递子例程引用。(可能有其他方法可以在不使用数组的情况下执行此操作。但是,由于某些其他限制,我觉得这是目前最好的。
我想做的基本示例代码:
#!/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.
Query -是否有可能传递内置的子例程作为引用?
前面已经有查询了,在这里,reg作为子例程引用内置在函数中。
这个问题是在3年前问的,我想知道现在是否有其他选择。如果有人解释为什么在这种情况下内置函数和用户定义的子例程之间存在区别,我会很感激。
shift
不是sub;它是一个像and
和+
一样的算子。如果你想要一个sub的引用,你需要创建一个sub。
[sub { shift(@{$_[0]}) }, $test, @temp],
相关:
- 什么是Perl内置操作符/函数?
- 如何获取
print
的参考?