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