首页 新闻 会员 周边 捐助

perl顺序1

0
[已关闭问题] 关闭于 2025-08-08 08:28

1 sub outer_func {
2 my $name = "Perl-ista";
3 my $inner_func = sub {
4 print "Hello, $name!\n";
5 };
6 $inner_func->();
7 }
8 outer_func();

_java_python的主页 _java_python | 小虾三级 | 园豆:1000
提问于:2025-08-08 08:28
< >
分享
所有回答(1)
0

8 → 1(进入 outer_func) → 2 → 5(把匿名子例程的引用赋给局部变量 $inner_func) → 6 → 3(进入匿名子例程) → 4 → 4 返回 → 6 返回 → 8 结束。
函数绑定(创建 CODE 引用并与变量关联)的时间
• outer_func:在 编译阶段 就被解析并绑定到包符号表,代码尚未运行即已存在。
• $inner_func:在 运行时 每次执行到第 5 行时才把匿名子例程的 CODE 引用赋给局部变量 $inner_func;每次调用 outer_func 都会重新创建并绑定一次。

_java_python | 园豆:1000 (小虾三级) | 2025-08-08 08:28

匿名函数(anonymous sub / 闭包)没有名字,因此编译器无法在编译期就把它塞进包符号表;只有到运行期 真正执行到创建它的那条语句 时,Perl 才现场生成新的 CV 对象并返回引用。于是它只能“在运行时”。

支持(0) 反对(0) _java_python | 园豆:1000 (小虾三级) | 2025-08-08 08:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册