小编WMX*_*WMX的帖子

嵌套函数调用范围和语法

我试图调用嵌套的递归perl函数,但我无法解决正确的语法问题.

问题:对嵌套函数执行递归调用的正确语法是什么(如果应该递归调用嵌套函数)?

答:请参阅接受的答案中建议的伪代码.

这是一个伪代码片段:

use Scalar::Util;
sub outerfunction {
  my $innerfunction = sub {
    # Do something
    innerfunction(); 
    # Do other things
  }; 
  Scalar::Util::weaken($innerfunction); 
  &$innerfunction(@_);
}; 
Run Code Online (Sandbox Code Playgroud)

我试图调用内部函数如下(带有相应的错误消息):

innerfunction
Run Code Online (Sandbox Code Playgroud)

未定义的子程序&main :: innerfunction

&innerfunction
Run Code Online (Sandbox Code Playgroud)

未定义的子程序&main :: innerfunction

&$innerfunction
Run Code Online (Sandbox Code Playgroud)

全局符号"$ innerfunction"需要显式包名

我也尝试将内部函数声明为local,但收到以下内容:

全局符号"$ innerfunction"需要显式包名

我对解释语言没有多少经验,因此任何与内存/堆栈泄漏/损坏或上述伪代码的其他危险(除了递归的系统限制之外)相关的附带注释也将非常受欢迎.

谢谢!在Linux 2.6.34.7-61.fc13.x86_64上运行的perl v5.10.1

syntax recursion perl scope

4
推荐指数
1
解决办法
971
查看次数

标签 统计

perl ×1

recursion ×1

scope ×1

syntax ×1