Perl My和LOCAL区别

46 篇文章 30 订阅 ¥39.90 ¥99.00
全局变量:不加说明的变量为全局变量,在子程序中改变会覆盖已有的值。


局部变量包含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\n";
} 
用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\n";
} 
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\n";
} 
spoof;
[oracle@jhoa perl2]$ perl a4.pl 
Current value is

My 程序块内可见,同级块可见  Local 调用的子程序里也可见

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值