Perl文法之解析Perl變數使用_應用技巧

來源:互聯網
上載者:User
本文和大家重點討論一下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不許可在''(單引號)中插入變數!!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.