实现动态范围,我使用的是 local
.然后我遇到了 this 帖子,内容如下:
Why have local at all? The answer is 90% history. Early versions of Perl only had global variables. local was very easy to implement, and was added to Perl 4 as a partial solution to the local variable problem.
...永远不要使用本地。
它的使用是被弃用还是不鼓励?如果是,替代方案是什么?
最佳答案
您链接的帖子具有误导性,或者至少是不完整的。确实,您永远不应该使用 local
创建一个词法变量。事实并非如此,这就是 my
是为了。
但是,您应该使用 local
当您需要其实际功能时:为全局变量提供临时值。这最常用于临时设置 Perl 的特殊变量。一个经典案例是这样的:
{
local $/;
$entire_file = <$filehandle>;
}
为了一次读取整个文件,您需要将记录分隔符设置为未定义。但你只想暂时这样做;因此
local
应该使用。这绝对不气馁。它被认为是好的 Perl 代码。
更新:我看到这篇文章实际上有一个注释,可以证明其“从不使用本地”声明。尽管如此,我认为做出这样一个笼统的声明是具有误导性的。我同意该说明所回应的批评。上面的例子是一个很常见的基本案例,还有其他几个
local
的常见用法。在这方面,以及。我知道初学者的教程需要保持简单,但简单并不一定意味着不准确。 “现在,不要担心
local
; 只需使用 my
”将同样清晰和简单,但不会误导人们认为永远不应该使用 local 。
关于perl - 总是使用我的;从不使用本地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14457605/