gpt4 book ai didi

perl - 给定 Perl 中的包名,如何从包中调用子程序?

转载 作者:行者123 更新时间:2023-12-04 16:54:43 27 4
gpt4 key购买 nike

给定一个包含表示包名称的字符串的变量,我如何调用包的特定子例程?

这是我想出的最接近的事情:

package MyPackage;

sub echo {
print shift;
}

my $package_name = 'MyPackage';
$package_name->echo('Hello World');

1;

这段代码的问题是子程序作为类方法被调用;包名作为第一个参数传入。我想从包名调用子例程,而不隐式传入特殊的第一个参数。

最佳答案

听起来您实际上并不想将其作为方法调用,而是作为常规子例程调用。在这种情况下,您可以使用符号引用:

my $package_name = 'MyPackage';
{
no strict 'refs';
&{ $package_name . '::echo' }( 'Hello World' );
}

关于perl - 给定 Perl 中的包名,如何从包中调用子程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890558/

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