【发布时间】:2017-01-28 06:23:33
【问题描述】:
请看下面的代码:
use strict;
use warnings;
print "subroutine is defined\n" if defined &myf;
myf();
sub myf
{
print "called myf\n";
}
undef &myf;
#myf();
print "now subroutine is defined\n" if defined &myf;
输出是
subroutine is defined
called myf
第一个print 语句可以打印,这是否意味着解释器(或编译器?)进一步查看并看到子程序定义?如果是这样,为什么它没有将undef &myf; 视为第二个print 语句?
谢谢
【问题讨论】:
-
因为
undef是在运行时运行的代码,而sub是一个定义并且发生在编译时。
标签: perl subroutine defined undef