perl中的my和our

                      our 和 my 一样,都是对变量的声明, 
不过 our 声明的是包全局变量, 
而 my 声明的是词法变量。 


不过,经过 our 声明的变量,它会变得像一个词法变量一样, 
其实这也是 our 存在的目的:用来欺骗 strict pragma,使 strict 以为它是一个词法变量,其实却不是。 


有一个简单的办法可以理解 our: 
1,你就把 our 声明的变量和 my 声明的当成一样。 
2,记住 our 和 my 的区别:our 声明的是一个包全局变量,因此在符号表中存储(可以通过全限定在任何地方访问),而 my 声明的是一个真正的词法变量,只能在闭合块中访问。




my 和 our 的区别: 


use strict; 


my $var; 
$var = 1; 

    my $var; 
    $var = 2; 
    print $var, "\n"; 

print $var, "\n"; 


output 






 
use strict; 


our $var; 
$var = 1; 

    our $var; 
    $var = 2; 
    print $var, "\n"; 

print $var, "\n"; 


output 






our (或者什么修饰都没有)声明的是“包全局变量”,它的是“依附”在“包”上面的,它的存储位置是“包符号表”, 
my 声明的是“词法变量”,它是“依附”在“代码块”上的,它的存储位置是“代码块”的“变量标签薄”,代码块是不不可以访问的,所以词法变量同样也不可以访问。 
但是包全局变量就不同了,用全限定就可以访问。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值