zoukankan      html  css  js  c++  java
  • Perl My和LOCAL区别

    全局变量:不加说明的变量为全局变量,在子程序中改变会覆盖已有的值。
    
    
    局部变量包含my 和local
    
    局部变量my:用my说明的变量如my $a; 
    my定义的变量只在该子程序中存在。
    My定义的变量在程序块内存在,包括在程序块内部定义的程序块也可见。在程序块外销毁。如果在主程序开头定义时相当于全局变量。
    程序块是由{}包含的语句,if,while,sub都可以定义程序块。
    
    
    my($a,$b)和my $a,$b不一样。
    
    前者表示 局部变量
    
    后者表示 $a是局部变量 ,$b是全局变量
    
    
    local定义的变量不存在于主程序中,但存在于该子程序和该子程序调用的子程序中
    
    
    sub spoof { 
    	local ($value) = "temporary";
        tellme();
    } 
    sub tellme { 
        print "Current value is $value
    ";
    } 
    用my时$value只存在于spoof中,tellme是另一个块,其中的$value中不同的变量。用local变量可在调用的子程序中出现,可以打印出值 。
    
    local 在本块内改变全局变量的值如$/。出了块就恢复。内部变量不能用my声明。
    
    [oracle@jhoa perl2]$ cat a4.pl 
    sub spoof { 
    	local  $value = "temporary";
        tellme();
    } 
    sub tellme { 
        print "Current value is $value
    ";
    } 
    spoof;
    
    [oracle@jhoa perl2]$ perl a4.pl 
    Current value is temporary
    
    
    
    此时用my 就打印不出来了
    [oracle@jhoa perl2]$ cat a4.pl 
    sub spoof { 
    	my   $value = "temporary";
        tellme();
    } 
    sub tellme { 
        print "Current value is $value
    ";
    } 
    spoof;
    [oracle@jhoa perl2]$ perl a4.pl 
    Current value is
    
    My 程序块内可见,同级块可见  Local 调用的子程序里也可见
    

  • 相关阅读:
    自用python时间格式转换lib库代码
    如何在datetime.strptime中添加时区
    bs3迁移到bs4, import lxml.html.soupparser 报错的解决
    mac下pip install lxml报错
    删除 Mac OS 10.10 中“打开方式”里重复或无用的程序列表
    python的urllib2库详细使用说明
    近期个人项目计划
    在centos中添加freeswitch服务开机自动运行
    ddd
    Sqlserver 2008安装
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351979.html
Copyright © 2011-2022 走看看