perl 中的my和全局变量

摘要:
$Some::stuff使用包some的标准变量$stuffour把名字限制于一个作用域,local把值限制于一个作用域,my把名字和值都限制于一个作用域my变量:[root@masterWebqq]#catt5.pl{my$var=11;print"$varis1--$var";}{print"$varis2--$var"};{our$var=11;print"$varis1--$var";}{print"$varis2--$var"};[root@masterWebqq]#perlt5.pl$varis1--11$varis2--$varis1--11$varis2--11our变量:[root@masterWebqq]#catt6.plour$PROGRAM_NAME="waiter";{my$PROGRAM_NAME="something";print"$PROGRAM_NAMEis1---$PROGRAM_NAME";our$PROGRAM_NAME="server";#这里的our和外面的相同,和前句不同。print"$PROGRAM_NAMEis2----$PROGRAM_NAME";#这里调用的代码看到的是"server"}print"$PROGRAM_NAMEis3----$PROGRAM_NAME";[root@masterWebqq]#perlt6.pl$PROGRAM_NAMEis1---something$PROGRAM_NAMEis2----server$PROGRAM_NAMEis3----server[root@masterWebqq]#my声明的是词法变量,"把名字和值都限于限于某个范围",简单说,就是只能本层模块或者函数可以看到这个变量,高一层的或者低一层的都看不到的。都没有,在greeting1中callgreeting2时,greeting2看不到greeting1的私有$hello变量,只能看到外面的全局变量$hello
$Some::stuff 使用包some的标准变量$stuff


our 把名字限制于一个作用域,

local 把值限制于一个作用域,

my 把名字和值都限制于一个作用域



my变量:
[root@master Webqq]# cat t5.pl 
{my $var=11;print "$var is 1--$var
";}{print "$var is 2--$var
"};
{our $var=11;print "$var is 1--$var
";}{print "$var is 2--$var
"};
[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_NAME
";
our $PROGRAM_NAME = "server"; #这里的our和外面的相同,和前句不同。
print "$PROGRAM_NAME is 2----$PROGRAM_NAME
";
# 这里调用的代码看到的是"server"
 }
print "$PROGRAM_NAME is 3----$PROGRAM_NAME
";
[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

免责声明:文章转载自《perl 中的my和全局变量》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linxu的struct ifaddrs 与getifaddrs()函数CSS3常见动画下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Perl脚本学习经验(二)常用命令举例

一.chomp   作      用:去除读入字符串的换行符,去除\n或者\r\n:   简单举例:    while(<FDATA>)    {        my $tmp_record = $_;        chomp ($tmp_record);    }        简单说明:此时$tmp_record变量的结束处已经不包含换行...

[JAVA] 运行 java HelloWorld 命令,提示“错误: 找不到或无法加载主类

肯定是哪里出了问题,需要检查命令、系统环境变量配置、代码三个方面: 命令 java运行需要先使用“javac HelloWorld.java”命令对java文件进行编译,编译会自动生成一个同名的以“.class”为后缀的类文件放在同一目录,然后再执行“java HelloWorld”来运行。(注意:此处运行“java”命令,java后只能跟文件名,不需要任...

C++指针类型间强制转换

深入理解指针类型间的转换 C++中指针的强制转换 强制类型转换(int)、(int&)和(int*)的区别 内存中的地址   地址的本质就是一串0和1的机器代码,内存中的地址没有明确数据类型,但地址值有类型,以32位编译器为例,内存中的地址是一个32位的整数。无论什么类型的指针变量,在内存中本质上都是一样的,都是一个整数值的地址值,该地址值可以...

DAG优化

DAG优化 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 大家都学过了代码优化,其中有一个DAG优化,这次我们就练习这个操作。 Input 输入第一行为一个整数n(n < 100),表示该组输入的表达式的个数...

使用docker私有化部署nuget server-proget

在linux上使用docker部署proget 首先创建共用网络proget docker network create proget 创建postgresql库 docker run -d -v /etc/localtime:/etc/localtime:ro -v /var/proget/db:/var/lib/postgresql/data --ne...

使用try-with-resource遇到的问题

JDK1.7增加了try-with-source语法。在try中声明一个或者多个资源,在try块代码执行完成后自动关闭流,不用再写close()进行手动关闭。 1 try(Resource res = xxx)//可指定多个资源 2 { 3 work with res 4 } 5 // 实现了AutoCloseable接口的类的对象就是资源 于...