本文和大家重點(diǎn)討論一下Perl語法中Perl變量的概念,Perl變量分為標(biāo)量變量,數(shù)組變量,聯(lián)系關(guān)系數(shù)組變量3類.Perl的變量對(duì)巨細(xì)寫敏感,好比:An,AN,an是3個(gè)分歧的變量,可是分歧范例的變量可以利用統(tǒng)一個(gè)名字。
Perl語法簡(jiǎn)介
1.Perl變量
1.1.Perl語法中Perl變量分類
Perl變量分為標(biāo)量變量,數(shù)組變量,聯(lián)系關(guān)系數(shù)組變量3類.Perl的變量對(duì)巨細(xì)寫敏感,好比:An,AN,an是3個(gè)分歧的變量,可是分歧范例的變量可以利用統(tǒng)一個(gè)名字,好比:VAR可所以一個(gè)標(biāo)量變量,同時(shí)也可以有一個(gè)數(shù)組變量也是VAR.這是由于Perl對(duì)每種范例的變量接納自力的名字空間,別的Perl的變量,可以存儲(chǔ)任何范例的數(shù)據(jù),無須像C那樣聲明變量,數(shù)據(jù)范例之間會(huì)主動(dòng)轉(zhuǎn)換,同時(shí)Perl變量也有全局與歷程變量之分,默認(rèn)是全局變量.
1.2.Perl變量
1.2.1Perl語法中Scalar變量(標(biāo)量變量)
標(biāo)量變量只能存放一個(gè)值.Perl中的標(biāo)量變量名總以字符$開首.下面的Perl語句把9這個(gè)值賦給標(biāo)量變量$nine.把"BATI"賦給標(biāo)量變量$name.然后用PRINT語句打印出來.
復(fù)制代碼 代碼如下:
$nine=9;
$name='BATI';
print($name,'is',$nine);
把上述語句存為TEST01.PL文件,然后再在DOS情況下(WIN9X的MS-DOS體例也可以)運(yùn)行:
C:\Perl5>PerlTEST01.PL(回車)
BATIis9(什么?很眼熟??是阿,Perl和我們常用C便是這么相似)
1.2.2Perl語法中數(shù)組變量
數(shù)組是一次可以或許存儲(chǔ)多個(gè)變量的表.它的賦值方式如下:
@weekdays=('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
print(@weekdays);#輸出為:SunMonTueWedThrFriSat
print($weekdays[1]);#輸出為:Sun
@work=@weekdays[1..5];#此時(shí),數(shù)組work的值為('Mon','Tue",...,'Fri');
@none=();#暗示空數(shù)組
數(shù)組變量名以@開首,[]內(nèi)是數(shù)組的下標(biāo)值,下標(biāo)值從0起頭.這與C依然很相似.
同樣的在Perl中,若是只稀有組名,而紕漏下標(biāo)的話,也會(huì)像C那樣輸出整個(gè)輸出,好比:
第一個(gè)輸出語句.
但請(qǐng)注重在輸出Sun那一句時(shí),當(dāng)我們引用數(shù)組中某一個(gè)值的時(shí)辰,我們不再利用@,而是利用$作為變量的開首,由于就單個(gè)值而言,它是一個(gè)標(biāo)量變量,以是如斯(這和C可紛歧樣哦)固然你還得給出下標(biāo)值.
在給數(shù)組work賦值的語句中,我們用到了SLICE初始化數(shù)組,你不必體貼什么是SLICE,你只要記著這種情勢(shì)就可以了,實(shí)在SLICE是表格的一部門,是官方的暗示.
對(duì)數(shù)組的賦值是多種多樣的.前面我們看到的都是用值對(duì)數(shù)組賦值,同樣你也可以用變量大概另一個(gè)數(shù)組的值給數(shù)組賦值,好比:
@name=($firstname,@lastname);
@say=('Hesaid',@saysomething);
以下是SLICE的例子:
復(fù)制代碼 代碼如下:
@weekend=@weekdays[0,6];#數(shù)組weekend的值為('Sun','Sat')
print(@weekdays[1..5,0,6]);#輸出成果為'MonTueWedThuFriSunSat'
Perl還撐持一種特別機(jī)關(guān)符$#var,它是用來返回?cái)?shù)組末了一個(gè)索引值.好比下面的語句操縱$[機(jī)關(guān)符確定命組的第一個(gè)索引值,用$#var確定命組末了的索引值,然后表現(xiàn)整個(gè)數(shù)組:
for($i=$[;$i=$#buffer;$i++){print$buffer[$i];}
上面語句與print@buffer;的輸出成果是一樣的.
1.2.3Perl語法中標(biāo)量與數(shù)組變量
表機(jī)關(guān)符(,)與挨次計(jì)值運(yùn)算符(,)很是相似.是以,Perl挪用哪一個(gè)運(yùn)算符取決于號(hào)令文件運(yùn)行時(shí)的詳細(xì)環(huán)境,即文件正在利用數(shù)組仍是標(biāo)量值.Perl在數(shù)組表達(dá)式中挪用表布局符,在挨次計(jì)值中挪用計(jì)值運(yùn)算符.請(qǐng)思量以下兩個(gè)表達(dá)式:
@an_array=(1,2,3,4,5);
$a_scalar=(1,2,3,4,5);
第一個(gè)語句初始化一個(gè)數(shù)組,第二句把$a_scalar變量的值設(shè)為5,并且打消了前4個(gè)元素的賦
值感化.
再來看一個(gè)例子:
復(fù)制代碼 代碼如下:
print$assoc{1,2};
@print$assoc{1,2};
第一句打印二維聯(lián)系關(guān)系數(shù)組的一個(gè)元素值,而第二句打印一維數(shù)組的兩個(gè)元素值.
1.2.4Perl語法中聯(lián)系關(guān)系數(shù)組變量
聯(lián)系關(guān)系數(shù)組變量與數(shù)組變量很相似,都可以存儲(chǔ)標(biāo)量變量的表.它們的區(qū)別在于數(shù)組變量必需經(jīng)由過程整數(shù)下標(biāo)來引用數(shù)組元素,而聯(lián)系關(guān)系數(shù)組變量可以經(jīng)由過程任何值作為下標(biāo)而到達(dá)拜候數(shù)組元素的目標(biāo).聯(lián)系關(guān)系數(shù)組的下標(biāo)我們稱之為鍵值(Key),是一種索引值.下面我們經(jīng)由過程一個(gè)例子來明白:
復(fù)制代碼 代碼如下:
$ages{'Bob'}=35;
$ages{'Mary'}=25;
$,='';
print@ages{'Bob','Mary'};
printkeys(%ages);
for$name(keys(%ages))
{
print"$nameis$ages{$keys}\n";
}
法式把一個(gè)值賦給'$,'變量,如許今后的print語句的輸出會(huì)受到影響,關(guān)于特別變量'$,'我們將在今后先容.Perl挪用聯(lián)系關(guān)系數(shù)組變量時(shí),利用花括號(hào){}括起鍵值.
@ages{'Bob','Mary'}在花括號(hào)內(nèi)給出了鍵值,暗示引用一個(gè)元素,此語句中有兩個(gè)鍵值,暗示引用數(shù)組的一部門,其成果應(yīng)為(35,25)與($ages{'Bob'},$ages{'Mary'})語句的成果不異.
printkeys(%ages)利用了keys運(yùn)算符.其成果將返回聯(lián)系關(guān)系數(shù)組的全部鍵值,構(gòu)成一個(gè)表.%ages暗示引用整個(gè)聯(lián)系關(guān)系數(shù)組.
請(qǐng)注重輪回語句中的print語句,在這里我們看到了在""(雙引號(hào))中插入變量的用法,這長(zhǎng)短常有效的.在輸出成果的時(shí)辰,變量將被替代成變量的值作為輸出的終極成果,這便是所謂的內(nèi)插法.可是Perl不許可在''(單引號(hào))中插入變量!!!!