【发布时间】:2011-08-06 02:11:02
【问题描述】:
Perl 中由局部变量分配的内存位置可以存活多久(对于数组、散列和标量)?例如:
sub routine
{
my $foo = "bar";
return \$foo;
}
函数返回后,你还能访问内存中的字符串"bar"吗?它会存在多久,它是类似于 C 中的静态变量还是更像是在堆外声明的变量?
基本上,这在这种情况下有意义吗?
$ref = routine()
print ${$ref};
【问题讨论】:
-
你试过这个代码吗?您至少可以自己回答第一个问题。
-
@runrig,“它恰好在这种特殊情况下有效”和“这实际上应该有效”之间存在差异。运行代码只会告诉你第一个。
标签: perl lexical-scope