`
winteen
  • 浏览: 13002 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[微]perl variable system

 
阅读更多

1.perl有两套变量系统。一由our声明,又叫全局/包/符号表变量.二是my变量,又叫私有/局部/词法变量。

2.perl4.0时,只有包变量。且没有our,没有use strict 'vars';

3.perl4.0时,程序员们终于受不了了(想像一下没有私有变量的日子),于是引入了一个轻量级的解决方案: local。

4.到目前为止,你只能local一个包变量,在所在块中,你可以尽情的操弄它,出了这个块,它还是原来的它。

5.local的效果是创建了一个dynamic scope,可能只有1%的情况会使用它。具体请见http://perl.plover.com/local.html

6.显然块+loca只能解决部分问题,程序员们一直在骂娘。

7.perl 5.0+, 局部变量系统终于被实现,但local已经被占,于是使用my,取其“私有”之意。

8.my变量的范围(可见性)可以通过看程序文本确定:包含其声明的最小块。因此被称作词法变量。

9. 两套变量系统导致的结果是: 光秃秃的全局变量声明时赋值很容易被误解为私有变量的某一次赋值。于是加入了use strict 'vars'语法检查。

10. use strict 'vars'强制包变量必须带着包的名字。

11. 负责实现PackageNameIsVeryLongAndPackageVariablesAreEveryWhere这个包的程序员开始骂娘。

12.于是引入了 no strict vars qw/$a $b/;

13. perl程序员依然在骂娘,原因是怪怪的perl连声明个变量都很怪,被嘲了。。。

14.perl5.6终于引入了our。

15.our变量被称为符号表变量,因为会出现在包的符号表中。而my变量不会。


 

分享到:
评论

相关推荐

    Learning Perl (7th Edition)

    If you’re just getting started with Perl, this is the book you want—whether you’re a programmer, system administrator, or web hacker. Nicknamed "the Llama" by two generations of users, this ...

    在VB中如何调用perl代码.pdf

    - 下载完成后,将其放置在系统的`System32`目录下,并在VB中添加引用。 3. **配置VB工程**: - 打开VB项目。 - 在“引用”对话框中选择“浏览”,定位到msscript.ocx文件的位置,添加其引用。 #### 三、编写与...

    Perl:将系统命令标准输出重定向到$ variable

    在Perl编程语言中,有时我们需要执行系统命令并捕获其标准输出以便在脚本中进一步处理。这可以通过使用内置的反引号运算符(``)或qx//语法来实现。这两种方法都允许我们将命令的输出存储在一个变量中,而不是直接...

    在Java中运行Perl脚本 JERL.7z

    4. **传递参数**:如果需要向Perl脚本传递参数,可以通过`Perl`对象的`setVariable()`方法设置全局变量,或者使用`Perl`的`runScriptWithArgs()`方法直接传递。 5. **获取结果**:Perl脚本的输出可以通过`Perl`对象...

    Using Perl For Web Programming.pdf

    Using Perl for Web Programming David Harlan, et al. CONTENTS Chapter 1 Perl Overview Perl Origins H Borrowings H Cost and Licensing H Distribution H G Perl Programs Invocation H Command-Line ...

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    libencode-locale-perl libfile-listing-perl libfont-afm-perl libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl ...

    lichee_20170502_1607_全志R16的linux系统编译需要改动的文件_使用parrotv1.1的内核_没有外层目录.7z

    libencode-locale-perl libfile-listing-perl libfont-afm-perl libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl ...

    Awk入门教程 《Awk A Tutorial and Introduction - by Bruce Barnett》

    Awk入门教程。作者 Bruce Barnett 注:英文版。以下是目录 Why learn AWK? Basic Structure Executing an AWK script Which shell to use with AWK? Dynamic Variables ...AWK, NAWK, GAWK, or PERL

    Perl中功能强大的Web模板系统-开源

    Nes(Not Another Template System)是一个轻量级的模板引擎,旨在简化Web应用的开发过程。它的设计目标是避免过度复杂性,同时保持足够的灵活性,以适应各种项目需求。Nes的核心理念是“简单即强大”,它使用简洁的...

    EssentialPerl.pdf

    - **创建引用**:`my $ref = \my_variable;` - **解引用**:`$value = $$ref;` #### 13. 简洁Perl Perl语言本身非常灵活,可以通过不同的方式实现相同的功能。简洁Perl强调使用最少的代码实现目标。 **总结** ...

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    原文如下: 以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请...

    用grads处理grib格式文件的准备

    - 下载Perl脚本源码文件`grib2ctl.pl`,并通过Perl编译器(如ActivePerl)和Perl转Exe工具(如Perl2Exe)将其转换为可执行文件。 - **使用grib2ctl.exe**: - 运行`grib2ctl.exe`生成控制文件,并使用`gribmap.exe...

    Linux for Developers

    * **Flow Control and Variables:** Covers programming concepts such as flow control and variable usage in Python and Perl, essential for developing complex applications. * **Practical Applications:** ...

    linux 命令英文全称

    CUPS(Common Unix Printing System)是一个打印系统(printing system),支持网络打印功能。 #### cvs=CurrentVersionSystem CVS(Current Version System)是一种版本控制系统(version control system)。 #### daemon...

    UE(官方下载)

    "Tagging" the find data allows UltraEdit/UEStudio to re-use the data similar to variable during a replace. For example, If ^(h*o^) ^(f*s^) matches "hello folks", ^2 ^1 would replace it with "folks ...

    asterisk app函数中文说明

    33. String & variable manipulation: Cut、ImportVar、Math、Prefix、SetGlob等,用于字符串处理和变量操作。 这些函数构成了Asterisk强大的功能集,使得开发者可以构建出复杂而灵活的通信解决方案。了解并熟练...

    使用多个Oracle Home时的nls_lang

    7. **.NET设置**:在.NET应用程序中,可以在App.config或Web.config文件中配置连接字符串,或者在代码中通过`System.Environment.SetEnvironmentVariable`方法来设置。 8. **Windows系统设置**:在Windows系统中,...

    linux英文全称

    Linux是开源的操作系统,它的英文全称是"Linux Operating System"。这个系统基于Unix的理念,由林纳斯·托瓦兹(Linus Torvalds)在1991年首次发布。Linux不仅应用于个人电脑,还广泛应用于服务器、超级计算机、...

Global site tag (gtag.js) - Google Analytics