perl 中的my和全局变量
发布时间:2020-12-15 23:40:43 所属栏目:大数据 来源:网络整理
导读:$Some::stuff 使用包some的标准变量$stuffour 把名字限制于一个作用域,local 把值限制于一个作用域,my 把名字和值都限制于一个作用域my变量:[root@master Webqq]# cat t5.pl {my $var=11;print "$var is 1--$varn";}{print "$var is 2--$varn"};{our $va
$Some::stuff 使用包some的标准变量$stuff our 把名字限制于一个作用域,local 把值限制于一个作用域,my 把名字和值都限制于一个作用域 my变量: [root@master Webqq]# cat t5.pl {my $var=11;print "$var is 1--$varn";}{print "$var is 2--$varn"}; {our $var=11;print "$var is 1--$varn";}{print "$var is 2--$varn"}; [root@master Webqq]# perl t5.pl $var is 1--11 $var is 2-- $var is 1--11 $var is 2--11 our变量: [root@master Webqq]# cat t6.pl our $PROGRAM_NAME = "waiter"; { my $PROGRAM_NAME = "something"; print "$PROGRAM_NAME is 1---$PROGRAM_NAMEn"; our $PROGRAM_NAME = "server"; #这里的our和外面的相同,和前句不同。 print "$PROGRAM_NAME is 2----$PROGRAM_NAMEn"; # 这里调用的代码看到的是"server" } print "$PROGRAM_NAME is 3----$PROGRAM_NAMEn"; [root@master Webqq]# perl t6.pl $PROGRAM_NAME is 1---something $PROGRAM_NAME is 2----server $PROGRAM_NAME is 3----server [root@master Webqq]# my 声明的是词法变量,"把名字和值都限于限于某个范围",简单说,就是只能本层模块或者函数可以看到这个变量,高一层的或 者低一层的都看不到的。例如: sub greeting1{ my ($hello) = "How are you do?"; greeting2(); } sub greeting2{ print "$hello/n"; } $hello = "How are you doing?"; greeting2(); greeting1(); greeting2(); 运行结果: How are you doing? How are you doing? How are you doing? 一个 How are you do? 都没有,在greeting1中call greeting2时,greeting2看不到greeting1的私有 $hello变量,只能看到外 面的全局变量$hello (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |