一、Perl的基本数据类型有三种:标量变量(Scalar)、数组变量(Array)、哈希变量(Hash/Dict);
1、标量变量:以字符"$"开头,$是标量变量的标记;标量变量用于保存整数、浮点数、BOOLEAN数等数字和字符串数据;它是Perl的最基本的数据类型;标量变量根据上下文应用环境来确定它所存放的是数字或字符串数据;
如:$a = 123;
$b = 3.1415926;
$c = "Perl";
2 、数组变量:以字符"@"开头,@是数组变量的标记;数组变量是存放一系列标量数据、数组变量、哈希变量、常量,等的容器;其中的元素即可以是常量,也可以是标量,还可以是另外的数组,更可是哈希变量;对数组的访问是通过下标索引来实现的;跟C语言中访问数组的方法一致;下标索引是使用一对中括号"[]"包围起来的;最大的数组可以占满整个可用内存,最小的数组为空数组"()";
如: @Array = (1,2,3,"abc","def", 3.1415926, $abc, $def, @otherArray);
3、哈希变量:以字符"%"开头,%是哈希变量的标记;哈希变量使用一个关键字Key和一个值Vale组成的Key-Value对来保存数据的,与数组一样,也可以通过哈希变量的下标索引来访问哈希变量中的数据,不同的是,哈希变量的索引不仅仅可以使用非负的整数作为索引,还可以使用其它数据类型作为索引,比如:可以使用字符串作为访问数据的索引(Key),也可以使用另外的标量变量来访问数据;关键字或下表索引是使用一对花括号"{}"包围起来的;
如:%Hash = ("A" => 1001, "B" => 1002, "C" => "Perl Book", 1003 => "Perl Word", 1004 => 1005);
二、变量的作用域:
Perl的变量的作用域有以下几种:块级作用域、函数(子程序)级作用域、文件级作用域、程序级作用域;
1、块级作用域:
是在使用一对花括号包围起来的一个代码块范围之内;离开这段代码块,块内定义的变量就不再有意义;
{
# Code .......
my $var;
my ($var1, $var2,$var3, $var4);
..............................
}
2、函数级作用域:是指变量的在使用sub定义的子程序的范围之内,函数结束并返回之后,函数内定义的局部变量就不再有意义;
sub MyFunction ()
{
# Code .......
my $var;
my ($var1, $var2,$var3, $var4);
..............................
local $Variable;
local ($Variable1, $Variable2, $Variable3, $Variable4);
........................................
}
3、文件级作用域:值变量的生命周期只在当前文件范围之内,文件结束时,在文件内定义的文件级变量就不再有意义;
########### test.pl ########
#!/bin/perl -w
# Code .......
my $var;
my ($var1, $var2,$var3, $var4);
..............................
local $Variable;
local ($Variable1, $Variable2, $Variable3, $Variable4);
........................................
#File finish;
4、程序级作用域:也就是全局作用域,是指变量的生命周期在整个程序中都可见,可以被访问;Perl中,不加任何修饰符限制的变量,其默认的作用域就是全局作用域,在整个程序中都可以被访问;
如:
$Var = 123; #全局作用域的变量;
三、变量作用域修饰符:my、local
用my和local声明变量时将给变量赋空(NULL)值;
用my声明的变量,其作用域仅限于其所在的代码块,在这个代码块内有效,一旦离开了这个代码快,则用my声明的变量不再有效;用关键字my可以声明单个变量,也可以声明多个变量:
my $var;
my ($var1, $var2,$var3, $var4);
注意:使用my关键字声明多个变量时,一定要用"()"把这多个变量括起来,多个变量之间用逗号分隔开;如果不用"()"括起来的话,则仅仅声明第一个变量为my变量(局部变量),从第二个变量开始,剩余的所有变量都是全局作用域的变量;
如:
my $var1, $var2,$var3, $var4;
这个语句中,$var1是my限定的局部变量,$var2,$var3, $var4则是全局变量;
用local声明的变量,其作用域限于其所在的子程序,在这个子程序内有效,一旦离开了其所在的子程序,则用local声明的变量不再有效;用关键字local可以声明单个变量,也可以声明多个变量:
local $var;
local ($var1, $var2,$var3, $var4);
注意:使用local关键字声明多个变量时,一定要用"()"把这多个变量括起来,多个变量之间用逗号分隔开;如果不用"()"括起来的话,则仅仅声明第一个变量为local变量(局部变量),从第二个变量开始,剩余的所有变量都是全局作用域的变量;
如:
local $var1, $var2,$var3, $var4;
这个语句中,$var1是local限定的局部变量,$var2,$var3, $var4则是全局变量;