【发布时间】:2016-06-17 06:23:00
【问题描述】:
我正在更新一些非常旧的 Perl 代码(不是我的代码),我在一个子例程中遇到了以下内容:
sub DoEvent {
local(*eventWEH, $foreachFunc, @args) = @_;
$ret = do $foreachFunc(*eventWEH, @args);
}
这在 Perl 5.6.1 中似乎可以正常工作,但在 Perl 5.22 中不再有效,这在 do $foreachFun( 之后会出现语法错误
变量*eventWEH前面的星号有什么作用?
如果这是“C”,我会建议某种指针。 有什么建议吗?
ETA:这个子被调用,第一个参数有很多不同的类型。例如:
&DoEvent($abc, "DoAbc", @args);
和
&DoEvent(@xyz, "DoXyz", @args);
所以根据给出的答案,看起来 *eventWEH 可以采用不同的数据类型来匹配传递给子的任何参数。
【问题讨论】:
-
确定不是
&DoEvent(\$abc, "DoXyz", @args)和&DoEvent(\@xyz, "DoXyz", @args)?您发布的内容没有多大意义。
标签: perl