gpt4 book ai didi

Perl 动态/符号函数引用

转载 作者:行者123 更新时间:2023-12-02 15:52:20 25 4
gpt4 key购买 nike

给定包名 $package 和包内的函数名 $function,我可以创建对该函数的引用:

my $ref = eval( "\\&${package}::${function}" );

作为一个完整的例子:

#!/usr/bin/perl -w

use strict;

package foo;

sub func()
{
print "foo::func\n";
}

package main;

my $package = "foo";
my $function = "func";

my $ref = eval( "\\&${package}::$function" );
$ref->();

我不是特别喜欢那里的 eval() 并且想知道如果没有 eval() 是否可以实现相同的结果?

最佳答案

你只需要这个:

my $ref = \&{ "${package}::$name" };

my $ref = \&{ $package . "::" . $name };

使用表达式生成变量名称,其中期望变量名称称为 symbolic reference .这些通常被 use strict; 禁止(特别是 use strict qw( refs );),但 \& 被豁免。

关于Perl 动态/符号函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72161148/

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