top
Loading...
CGI編程--perl語言中的變量類型
perl語言中的變量有以下五種:
標量,指針,數組,哈希表(hash)和句柄。
一、標量
我們先來看看標量,標量是perl語言中最簡單的一種數據類型。這種數據類型的變量可以是數字,字符串,浮點數,不作嚴格的區分。在使用時在變量的名字前面加上一個“$”,表示是標量,相當于scalar中的第一個S。

使用以下格式進行定義:
$myfirst= 123;# 數字 123
$mysecond="123";# 字符串123
$mythird= "$myfirst,$mysecond"; # 字符串123,123
$myforth= "$myfirst,$mysecond"; # 字符串$myfirst,$mysecond
數字類型的標量可以使用0開頭代表是8進制,用0x開頭代表是16進制。例如:
$var1= 017; # 十進制的15
$var2= 0xf; # 十進制的15
還可以使用下面的格式:
$var3= 123_456_7; # 1234567
浮點數可以使用以下定義方式:
$var4= 3.4;
$var5= 4.3e+21;
$var6= 234E345;

perl中的字符串使用一個標量來表示,定義方式和c很像,但是在perl里面字符串不是用0來表示結束的。而且使用雙引號和單引號定義的字符串是不一樣的。使用雙引號定義的字符串里面出現的變量名會進行替換,而且可以出現“nrt”等控制字符。而用單引號定義的就不可以了使用反斜杠引導的控制命令了(當然還可以使用反斜杠引道單引號和反斜杠),文本會按照字符串原來的樣子保存。
但是用單引號定義可以使用多行文本,如下所示:
$var7='這是一個使用
   多行字符串文本
的例子';
$var8= '''; # 字符串'

二、數組
在Perl中數組使用“@”引導,“@”的意義應該是相當于array中的第一個a吧(嘻嘻,猜的)。數組初始化使用()。我們可以采用如下方法初始化數組:
@var9=(1,2,3,4,5);
而當引用數組中的元素時則使用下面的格式:
$var10=$var9[1];
數組前面的引導字符變成了“$”,表示這里是引用數組中的元素。
如果使用“@”作引導字符,那么剛才的例子就會返回數組的長度。例如:
$length=@var9; # 則$length會返回數組長度也就是數組的元素個數5

三、哈希表(hash)
哈希表是一種很特別的數據結構,我在學習數據結構時見過,叫做散列(Set),在使用perl之前,我在borland C++中見過一種類似的class,也叫做Set。在JavaScript中也提供了相似的數據結構,叫做關連數組Associated Array。

哈希表用“%”引導。定義方法如下:
%var11=("hello"=>"哈羅","nihao"=>"你好");

使用方法如下:
print $var11{"hello"};# 輸出 哈羅 $var11{"nihao"}="你好";
還可以使用下面的方法定義:
%var12= ("hello","哈羅","nihao","你好");
這個方法的結果與上面的結果相同,但是我還是喜歡第一種方法,而且建議你也使用第一種方法。

四、句柄

句柄是一種特殊的數據,用來保存系統資源的指針,例如文件,目錄,管道,socket等等。在最新的perl中,實際上可以不使用這種數據。句柄類型沒有引導字符。一般情況下大家習慣使用大寫字母來標明句柄類型。例如下面的例子打開一個文件,讀出一行,然后關閉。
open(FILEHANDLE,"test.htm");
$templine=<FILEHANDLE>;
close(FILEHANDLE);
這里<>起從句柄中讀出一行的作用。

五、指針
perl里面的指針分為兩種類型,一種成為軟指針,另一種稱為硬指針。下面將主要介紹一下硬指針。在perl里面使用“”來生成指針。如下面的例子:
$vavr13="hello";
$pointerto=$var13;
這時$pointerto就是一個指向$var13的指針了。訪問指針指向的數據可以使用下面的方法。print $$pointerto; 也就是加上一個$就可以了。perl里面的指針與c里面的不同,perl里面的指針是有引用計數的。也就是說,如果一個數據可以記住自己被幾個指針引用,當沒有指針引用時這個數據會自動釋放內存。
北斗有巢氏 有巢氏北斗