Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318790
  • 博文数量: 88
  • 博客积分: 2051
  • 博客等级: 大尉
  • 技术积分: 950
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-14 23:59
文章分类

全部博文(88)

文章存档

2012年(3)

2011年(2)

2010年(9)

2009年(14)

2008年(60)

我的朋友

分类:

2009-08-05 16:27:40

my是用来将一个词法的名字和值限制在其有效范围。
 
//file1
my $val=1;
sub fun1{
print $val;  //此时类似于static文件全局变量
my $val2 = 10;
fun2(); //fun2看不到val2
}
 
our是用来表明正在访问一个全局变量,其有效范围可以通过子函数传递
//file2
   our $PROGRAM_NAME = "waiter";
   {
      our $PROGRAM_NAME = "server";
      # 这里调用的代码看到的是"server"
   }
   # 这里执行的代码看到的仍然是"server".
 
而local则不一样,
//file3
   local $PROGRAM_NAME = "waiter";
   {
      local $PROGRAM_NAME = "server";
      # 这里的代码看到"server".
      ...
   }
   # 这里执行的代码再次看到"watier"
 
通过local或者our去访问在文件范围的my变量时,会发生警告甚至错误。
 
如果打开了use stric 'vars';则不允许通过local方式在文件范围声明全局变量,而my的词法是允许的。引入our的原因就是通过our可以声明一个全局变量了,编译器不会抱怨
阅读(2065) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~