【发布时间】:2013-02-21 13:02:07
【问题描述】:
我有以下一段代码:(为了这个问题的目的非常简化,但完美地说明了我遇到的问题)
#!/usr/bin/perl
use strict;
use warnings;
&outer;
my $connected_sub;
sub outer {
print "HELLO\n";
&$connected_sub;
$connected_sub = sub {
print "GOODBYE\n";
}
}
程序运行时会给出以下输出和错误:
HELLO
Use of uninitialized value in subroutine entry at subTesting line 13.
Can't use string ("") as a subroutine ref while "strict refs" in use at subTesting.pl line 13.
我在这里完全忽略了什么吗?我无法理解或弄清楚这是什么问题。
【问题讨论】:
-
&outer;有一个非常特殊的含义(甚至比&outer()更特殊)。不要那样做。使用outer()。 -
请将粗体字的使用限制在非常重要的事情上。没有人喜欢一直被大喊大叫。
-
@darch - 好吧,我发现当事物被明确分开/或标题时更容易阅读和理解,这就是我这样做的原因,但我很欣赏其他人可能不会,所以我会忍受记住,谢谢
标签: perl nested anonymous-function anonymous subroutine