加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl将参数传递给eval

发布时间:2020-12-15 23:25:29 所属栏目:大数据 来源:网络整理
导读:我正面临使用eval函数的问题. 实际上我在SQL数据库中有一些函数名,我的目标是在perl中执行这些函数(在SQL中检索之后). 这是我正在做的,考虑到$RssSource- {$k} {Proceed}包含“ test”作为从SQL检索的字符串: my $str2 = "ABCD";eval "$RssSource-{$k}{Proc
我正面临使用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}总是包含名称或&名称,否则你提出的问题没有多大意义.

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读