微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl将参数传递给eval

我正面临使用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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐