一、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則是全局變量;