perl - 总是使用我的;从不使用本地?

标签 perl variables

实现动态范围,我使用的是 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/

相关文章:

php - 从 PHP 变量更新数据库数据

variables - DOS子字符串,其中Length为变量

c++ - 如何从父类访问变量

perl - 为什么我会在 Perl 中返回散列或散列引用?

regex - 如何显示从文件开头到首次出现正则表达式的数据?

perl - IPC::Open3 并确定 child 是否正在等待输入

c++ - extern 声明变量和全局变量的区别

perl - 为什么 Perl 有单独的 "perl"编译器和 "perlcc"前端?

perl - 无法修改逻辑和 (&&) 标量赋值

java - 如何测试是否设置了变量?