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