gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:01:48 24 4
gpt4 key购买 nike

我正在尝试将一组操作作为数组执行。为此,我必须传递子例程引用。 (可能有其他方法可以在不使用数组的情况下执行此操作。但是,由于某些其他限制,我觉得这是目前最好的方法)。

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

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
sub test()
{
print "Tested\n";
}

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.

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

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

由于这个问题是在大约 3 年前提出的,所以想知道现在是否有其他选择。如果有人解释为什么在这种情况下内置函数和用户定义的子例程之间存在区别,我们将不胜感激?

最佳答案

shift 不是 sub;它是一个运算符,就像 and+ 一样。如果您想要对子项的引用,则需要创建一个子项。

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

相关:

关于Perl 内置函数作为子例程引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15153265/

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