Perl将参数传递给eval

Perl将参数传递给eval,第1张

概述我正面临使用eval函数的问题. 实际上我在SQL数据库中有一些函数名,我的目标是在perl中执行这些函数(在SQL中检索之后). 这是我正在做的,考虑到$RssSource-> {$k} {Proceed}包含“& test”作为从SQL检索的字符串: my $str2 = "ABCD";eval "$RssSource->{$k}{Proceed}";warn if $@;sub tes 我正面临使用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}"$str2eval "$RSSSource->{$k}{Proceed}"($str2)

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

非常感谢你的帮助

问候.

弗洛朗

解决方法@H_403_39@ 我将假设$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)
总结

以上是内存溢出为你收集整理的Perl将参数传递给eval全部内容,希望文章能够帮你解决Perl将参数传递给eval所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1266491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存