gpt4 book ai didi

Perl 将参数传递给 eval

转载 作者:行者123 更新时间:2023-12-04 22:33:57 26 4
gpt4 key购买 nike

我在使用 eval 函数时遇到问题。

事实上,我在 SQL 数据库中有一些函数名,我的目标是在 perl 中执行这些函数(在 SQL 中检索后)。

这是我正在做的,考虑到 $RssSource->{$k}{Proceed} 包含 "&test"作为从 SQL 检索的字符串:

my $str2 = "ABCD";
eval "$RssSource->{$k}{Proceed}";warn if $@;

sub test
{
my $arg = shift;

print "fct TEST -> ", $row, "\n";
}

这是正常工作并显示:
fct TEST ->

但是我希望能够将 $str2 作为参数传递给 $RssSource->{$k}{Proceed} 但我不知道如何,我尝试的每个语法都返回一个错误:
eval "$RssSource->{$k}{Proceed}$str2"
eval "$RssSource->{$k}{Proceed}($str2)"
eval "$RssSource->{$k}{Proceed}"$str2
eval "$RssSource->{$k}{Proceed}"($str2)

有人可以告诉我如何正确地将参数传递给评估函数吗?

非常感谢你的帮助

问候。

弗洛朗

最佳答案

我将假设 $RssSource->{$k}{Proceed} 总是包含 name&name ,否则你问的没有多大意义。

my $func_name = $RssSource->{$k}{Proceed};
$func_name =~ s/&//;
my $func_ref = \&$func_name; # Works with strict on!
$func_ref->(@args);

如果你想添加一些错误检查,下面将检查 sub 是否可以被调用:
defined(&$func_ref)

关于Perl 将参数传递给 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717193/

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