Perl學(xué)習(xí)筆記 Perl變量的認(rèn)識(shí)
本文和大家重點(diǎn)學(xué)習(xí)一下Perl變量的相關(guān)知識(shí),Perl中的變量可以通過操作符(如+或.等)來產(chǎn)生新的變量。你可以從文件和設(shè)備中讀取變量,也可以將其輸出。
Perl學(xué)習(xí)筆記 Perl變量的認(rèn)識(shí)
Perl標(biāo)量的學(xué)習(xí)
任何語言都有Perl變量,Perl變量在Perl中簡單的分為標(biāo)量和組數(shù)Perl變量.
標(biāo)量:表示單個(gè)的量,即英文中所說的單數(shù).
例如:
- $name="Hello"';
- $age=18;
- $price=123.88;
- $price=343_333_333.898;
都是一個(gè)標(biāo)量,Perl對(duì)數(shù)字標(biāo)量在計(jì)算機(jī)中采用浮點(diǎn)數(shù)形式存貯。通常浮點(diǎn)數(shù)的精度是不夠準(zhǔn)確的。這點(diǎn)需要特別注意。
下面是一個(gè)例子:
- #!/usr/local/bin/perl
- $value=9.01e+21+0.01-9.01e+21;
- print("firstvalueis",$value,"\n");
- $value=9.01e+21-9.01e+21+0.01;
- print("secondvalueis",$value,"\n");
- ---------------------------------------------------------
- $program3_3
- firstvalueis0
- secondvalueis0.01
可以看到,不同的運(yùn)算順序可能導(dǎo)致的結(jié)果不一樣!在Perl中十進(jìn)制數(shù)字用0x開頭表示.0開頭表示一個(gè)8進(jìn)制數(shù)。Perl對(duì)數(shù)學(xué)運(yùn)算的操作符有:
算術(shù)操作符:+(加)、-(減)、*(乘)、/(除)、**(乘冪)、%(取余)、-(單目負(fù))
(1)前面幾個(gè)不用說了吧.說一下乘冪這里需要注冊(cè),基數(shù)不能為負(fù)數(shù).
(2)單目負(fù)又是什么意思?他實(shí)際上就是一個(gè)負(fù)號(hào)。就是數(shù)學(xué)中的負(fù)數(shù)表示符。
Perl變量的算術(shù)比較符:
==(相等),<(小于),>(大于),!=(不等于),還有一個(gè)<=>(表示可以取三個(gè)數(shù)-1,0,1);
標(biāo)量除了是一個(gè)數(shù)字,字符串之外,還可以是其它復(fù)雜類型的引用.這點(diǎn)請(qǐng)暫時(shí)記住.我將在后面詳細(xì)說明這個(gè)問題.
現(xiàn)在來說下字符串,Perl采用unicode表示一個(gè)數(shù)值,這就意味著和java一樣,可以表示世界上任何一個(gè)國家的語言文字,對(duì)于字符串的運(yùn)算符有
.(相連)
比較符:lt(小于),gt(大于),ne(不等于),eq(等于),le(小于等于),ge(大于等于),需要說明的的是。字符串的運(yùn)算是按Ascii來進(jìn)行運(yùn)算的。就是說a(Ascii值為97),A(ASCII值為65),結(jié)果就是:agtA
另一種Perl變量叫做數(shù)組Perl變量.?dāng)?shù)組大家都知道,表示一組數(shù)據(jù)的集合.?dāng)?shù)據(jù)型可以分為有序的數(shù)組和無序的列表.他通常相當(dāng)于英語中的復(fù)數(shù).還有一種叫散列.他是一種特殊的數(shù)組.用Key+value的形式來表示.相當(dāng)于Java中的Map.是按鍵值對(duì)來存放的.
我們用$表示一個(gè)標(biāo)量,用@表示一個(gè)列表和數(shù)組.用%表示一個(gè)散列.
舉例說明:
@lines=("a","b","c");
這樣就定義了一個(gè)數(shù)組,他里面有三個(gè)元素abc,定義數(shù)組時(shí)用()號(hào)把中間元素包擴(kuò)起來.里面用,號(hào)分開,也可以寫成這樣:@lines=qw(abcd);
注意用qw定義時(shí),里面不能寫,號(hào).這點(diǎn)請(qǐng)記住它!,而且qw里面只能是字符的原型,比如說,你給成這樣:$a="a";@lines=qw($abcd);
將$a這個(gè)Perl變量傳進(jìn)來,你的目的是這樣,但是我告訴你這達(dá)不到你希望的效果.
他會(huì)原封不動(dòng)的給你顯示出來.這也正好說明了這里不能給abcd加個(gè)雙引號(hào).
%person表示一個(gè)散列.
要對(duì)這個(gè)散列進(jìn)行給值.使用$person{"name"}="Hello";
也可以使用%person=("a","b","c","d")這樣的形式,我們說過,散列表示一個(gè)key/value的集合,所以perl會(huì)將這樣的列表形式的數(shù)組按照key/value進(jìn)行轉(zhuǎn)換.每兩個(gè)一組,前面是鍵,后面是值.
當(dāng)然這樣的形式并不好看.
我們還可以寫成;%person=("a"=>"b","c"=>"d").
你可以直接把一個(gè)數(shù)組表示的Perl變量給一個(gè)散列.用(),你也可以把一個(gè)散列的具體值指向另一個(gè)散列.
%person{"a"}={
"name"=>"zhangsan",
"age"=>"23",
}
通過$person{"a"}{"name"}訪問到zhangsan;
不僅如此,你還可以將一個(gè)散列的具體值指向一個(gè)數(shù)量.
%person{"a"}=["a1","a2","a3"];
通過$person{"a"}[0]訪問到a1;
有了這樣的機(jī)制我們很容易建立出類似多維數(shù)組一樣的東西!好了,是不是很簡單呢?
【編輯推薦】