perl24小時自學(xué)通13引用與結(jié)構(gòu)_第1頁
perl24小時自學(xué)通13引用與結(jié)構(gòu)_第2頁
perl24小時自學(xué)通13引用與結(jié)構(gòu)_第3頁
perl24小時自學(xué)通13引用與結(jié)構(gòu)_第4頁
免費預(yù)覽已結(jié)束,剩余8頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、如果Perl是你使用的第一個編程語言,那N本學(xué)時將會使你感到頗有t趣2在語言中,你會發(fā)一個概念s一數(shù)據(jù)實際N可是對一2有時稱指針在pascal或C語言中,有時種技術(shù)稱如果Perl是你使用的第一個編程語言,那N本學(xué)時將會使你感到頗有t趣2在語言中,你會發(fā)一個概念s一數(shù)據(jù)實際N可是對一2有時稱指針在pascal或C語言中,有時種技術(shù)稱在匯編語言中則根本沒有指針的概念在BASIC或Java中2如果你前未使用等概念,那N可能必須多次閱讀本學(xué)時講解的某些部V1指針O清Perl_擁有些特殊類型的值,O過在 Perl中,它們都稱2在 Perl中可于許多目的,但在本學(xué)時中,你要學(xué)的是如何使來調(diào)用帶有多個參數(shù)的

2、復(fù)雜函數(shù)如何創(chuàng)建復(fù)雜的數(shù)據(jù)類型,如列表的列表2的一本書2卡片可指明本書是什N類型的書比如小說1非小說1參考書等,并指明本書放在什N位置2,它們是O種類的用,并甚可參中的v他卡片Perl類似卡,可指向各數(shù)據(jù)能夠知道它指向的是何種類別的數(shù)據(jù)如標(biāo)量1數(shù)或哈希,_知道些數(shù)據(jù)在什N地方可被拷貝,但O改原始的任何東西2對于一數(shù)據(jù),可2實際N一可指向v他2請牢記O面些要點,慢慢閱讀O面幾頁內(nèi)容,并在q們介紹有的頭腦使用賦值運算符,可創(chuàng)建和賦值一個普通的標(biāo)量量,如O示 Stones在k一W都很l常2時,在計算機中的某個地方有一個標(biāo) $a的位置,它包含了_如果將標(biāo)量$b賦予$a,比如$a=$b,那N會產(chǎn)生數(shù)據(jù)的

3、兩個拷貝,它們使用兩個O如果你想要兩個獨立的數(shù)據(jù)拷貝,那N擁有兩個拷貝是很好的2但是,如果想讓 $a和都一個數(shù)據(jù)拷貝,那N 指向一數(shù)據(jù)的指針,并O包含實際數(shù)據(jù)的本身若要創(chuàng)建對某個既定,可在量的前面N一個反斜建稱$ref的對$a,需要像O面樣賦予$refs可個賦值創(chuàng)建了類似O面樣的件$ref并O包含用于它自的任何數(shù)據(jù),它是對 $a 指向一數(shù)據(jù)的指針,并O包含實際數(shù)據(jù)的本身若要創(chuàng)建對某個既定,可在量的前面N一個反斜建稱$ref的對$a,需要像O面樣賦予$refs可個賦值創(chuàng)建了類似O面樣的件$ref并O包含用于它自的任何數(shù)據(jù),它是對 $a的一2量$a根本沒有改,然可照常被賦值$a=Foo或顯示量$r

4、ef在包含對$a2O能簡單地對$ref進(jìn)行操作,因它邊沒有通常的標(biāo)值2實際N如果輸出$ref,就會顯示類似SCALAR(0 x0000)的信o2若要通過$ref獲得$a$ref2可被視N面的方塊圖中按箭頭2$ref來輸出$a的值,你可像O面樣使用一個在N面的碼段中, $ref當(dāng)然包含2增的一個$告訴Perl,$ref中標(biāo)量值的標(biāo)量值被出并輸出_可通于修改$a中的原始值項修改形p了類似O面如果你使用$ref而O是那N放在$ref中將被撤并被實際值,如O示N面?zhèn)€碼段運行, $refO再包含一,它是一個標(biāo)量2你可像任何vN面的碼段運行$oref和$nref均可用于Gandalf=2_可放對某個,如O

5、示 在類似O面的形式如果使用$bref2來輸出書,那是請注意, $bref2符號,它需要增,才能獲得原始值13.1.1 對數(shù)_可創(chuàng)建對數(shù)和 在類似O面的形式如果使用$bref2來輸出書,那是請注意, $bref2符號,它需要增,才能獲得原始值13.1.1 對數(shù)_可創(chuàng)建對數(shù)和哈希在標(biāo)量量$aref包含了對整個數(shù)arr若要使$aref來問arr的各個部V,你可使用O列碼之一了清楚起,可使用花括號P及數(shù)的各個部V隔開,如O示例如,若要使用數(shù)P$aref0,便輸出arr的有元素,可使用O面?zhèn)€碼13.1.2 ,可使用反斜,就像創(chuàng)建標(biāo)量和數(shù)N面?zhèn)€碼段用于創(chuàng)建對哈希結(jié)構(gòu) %hash%href來問%hash的

6、各個部V,可使用O面些碼例子若要迭通過哈希結(jié)構(gòu),輸出有的值,可使用O面?zhèn)€碼數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù) 13.1.3 由于整個數(shù),并可放在一個標(biāo)量中,因m借,你可調(diào)用帶有多個數(shù)或哈希結(jié)構(gòu)的函數(shù)你可能記得第8學(xué)時中q們講過,O面種碼段是O能運行的個碼O能運行,因 13.1.3 由于整個數(shù),并可放在一個標(biāo)量中,因m借,你可調(diào)用帶有多個數(shù)或哈希結(jié)構(gòu)的函數(shù)你可能記得第8學(xué)時中q們講過,O面種碼段是O能運行的個碼O能運行,因getarrays(fruit,veggies)將兩個數(shù)壓縮到單個數(shù)_中2在getarrays()函數(shù)中,將a和b賦予_,會導(dǎo)在放在_中的fruits和vegetabl

7、e的有元素都被賦予當(dāng)有數(shù)g入_之,就沒有辦法知道一個數(shù)在何時結(jié)和O一個數(shù)在何時開始有一個很大可發(fā)h作用的地方2你O必將整個數(shù)傳遞給 gearays要傳遞對些,無論$fruit_ref和$veg_ref可用來顯示或編輯數(shù)據(jù),如O示當(dāng)你將對標(biāo)量1數(shù)作參數(shù)傳遞給函數(shù)時,有幾個問題必須記住指向的原始數(shù)據(jù)進(jìn)行操作2請看O面些例子 在邊的例子中,當(dāng)按l常情況傳遞哈希結(jié)構(gòu)時, _得原始哈希結(jié)構(gòu)%hash中每個s鍵 在邊的例子中,當(dāng)按l常情況傳遞哈希結(jié)構(gòu)時, _得原始哈希結(jié)構(gòu)%hash中每個s鍵_值對的各個值2在子例程 changehash()中,在放入_中的哈希結(jié)構(gòu)的各個元素被拷貝,%local_hash就

8、被撤,而程序的要部V中的%hash則保持在右邊個例子中,對%hash通過_被傳遞到子例程changehash()中貝到標(biāo)量$href中,它然指原始哈希%hash2在子例程中, $href例程返回2changehash()返回,原始哈希結(jié)構(gòu)%hash將包含新s鍵13.1.4 創(chuàng)建對數(shù),可用來P子例程之間來回傳遞些結(jié)構(gòu),并可來創(chuàng)建O面q們很快就要介紹的一些復(fù)雜結(jié)構(gòu)2O過你應(yīng)知道,當(dāng)你創(chuàng)建了對哈希結(jié)構(gòu)數(shù),就O再需要原始哈希結(jié)構(gòu)或數(shù)2要對哈希結(jié)構(gòu)或數(shù)在,s原始數(shù)據(jù)O再在, Perl然保留著哈希結(jié)構(gòu)和數(shù)的各個元素在O面的碼段中,碼塊中創(chuàng)建了一個哈希結(jié)構(gòu) %hash,并個哈希結(jié)構(gòu)是碼塊在個碼塊中,標(biāo)量$h

9、ref被賦予對%hash使 失,$href中然有效因%hash是碼塊的_用結(jié)構(gòu)2當(dāng)結(jié)構(gòu)本身經(jīng)超出作域之,對的哈希結(jié)構(gòu)然可修改如果你察N面?zhèn)€碼塊,就會發(fā),它的唯一目的是創(chuàng)建對哈2Perl供了一個機制,可用來創(chuàng)建樣 ,并把它儲在 $ahref中花括號,但實際N并沒有創(chuàng)建新的量2當(dāng)數(shù)_用于傳遞子例程參數(shù)時,它是個的數(shù)。修改_數(shù)元素就會改變傳遞到函數(shù)中的原始值。修改傳遞給子例程的參數(shù),通常被認(rèn)為是O慎重的一種做法。如果你想讓子例程修改傳遞給它們的參數(shù),那么應(yīng)該傳遞對子例程的 。這種操作方法更加清楚。當(dāng)傳遞一個 時,可以認(rèn)為原始值是可以修改的。 可使用前面的對哈希=一節(jié)中介紹的有方法,對匿哈希結(jié)構(gòu)進(jìn)行操

10、作 可使用前面的對哈希=一節(jié)中介紹的有方法,對匿哈希結(jié)構(gòu)進(jìn)行操作樣,_可使用前面的對數(shù)=一節(jié)中介紹的方法對數(shù)進(jìn)行操作當(dāng)?shù)牧勘旧沓鲎饔糜驎r如果它是個_用量,那如果use strictl在運行,那NN面?zhèn)€碼段甚O進(jìn)行編譯2Perl將$ref的最一個實例視全局量,是O允許的2s使沒有use strict Perl的w警告特性_會輸出一個 undefinedvalue未定O的值o2些匿哈希結(jié)構(gòu)和匿數(shù)可合p某些結(jié)構(gòu)形式,們將在O一節(jié)中介紹構(gòu)2每個哈希結(jié)構(gòu)和數(shù)表一個標(biāo)量值,并由于它是單個標(biāo)量值,因m可在v他數(shù)和哈希結(jié)構(gòu)中,如O示O面各節(jié)將介紹列表和哈希結(jié)構(gòu)的一些常用結(jié)構(gòu)配置方法13.2.1 在Perl中

11、,列表中的列表常常用來表一種稱二維數(shù)的結(jié)構(gòu)2_就是說,標(biāo)準(zhǔn)數(shù)個值的線性列表,如O示二維數(shù)類似一個值的表格,面的每個元素按照軸N的一個點來進(jìn)行編址2數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)值值值值 Perl實際N并O支持真l的二維數(shù)Perl允許你使用數(shù)的數(shù),模仿建立二維若要創(chuàng)建數(shù)的數(shù),請使用O面?zhèn)€原O表達(dá)式 Perl實際N并O支持真l的二維數(shù)Perl允許你使用數(shù)的數(shù),模仿建立二維若要創(chuàng)建數(shù)的數(shù),請使用O面?zhèn)€原O表達(dá)式p2若要問最層的列表的各個元素s二維數(shù)中的單元格,可使用O面?zhèn)€碼若要確定最外層的列表中的元素數(shù)目,你可像對v他任何數(shù)那樣進(jìn)行操作,使用 表示法或者使用標(biāo)量NO文中的數(shù)若要確定層

12、列表中的某個列表的元素數(shù)目,可能有一點兒麻煩2語 $list_of_lists1回list_of_lists2如果將它輸出,則顯示類似ARR0 x00000個數(shù)據(jù)若要將list_of_lists的一個元素當(dāng)作數(shù)來處理,請在它的前面N一個符號 ,如示若要遍歷列表的列表中的每個元素,可使用O面?zhèn)€碼可添O面樣的結(jié)構(gòu)13.2.2 在N一節(jié)中,q們介紹了如何使和數(shù)創(chuàng)建基本的 Perl結(jié)構(gòu),s列表的列表2N可將數(shù)量O限制的數(shù)1標(biāo)量和哈希結(jié)構(gòu)的形合起來,創(chuàng)建更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如O面些結(jié)構(gòu)哈希結(jié)構(gòu)的哈希結(jié)構(gòu)由于本書篇幅有限,無法一一介紹有些結(jié)構(gòu)2你安裝的每個 Perl含了一個稱 Perl Data Stru

13、ctures Cookbook(Perl的數(shù)據(jù)結(jié)構(gòu)大全)=文檔2它細(xì)而明白述了些結(jié)構(gòu)和許多v他數(shù)據(jù)結(jié)構(gòu)2對于每種數(shù)據(jù)結(jié)構(gòu)Per Data Structures Cookbook= 2 Cokb 2 Cokbok 13.2.3 指向什N種類的數(shù)據(jù)結(jié)構(gòu)外,在你慣之前,語_容2Perl提供了一些w,可幫你確定有s的情況首先,可輸出2Perl能夠顯示指向什N結(jié)構(gòu)2例如,O面?zhèn)€碼行個結(jié)構(gòu)意味著量$mystery_reference是對一個數(shù)量SCALAR1哈希結(jié)構(gòu)HASH或子例程CODE的 2m外,量_可是對2若要輸出 $mystery_Perl的調(diào)試程序_配有一些程序w,幫你確指向什N數(shù)據(jù)結(jié)構(gòu)2在調(diào)試

14、程序中,你可像通常那樣輸2O面?zhèn)€碼段顯示了一個被查看的 $ref 結(jié)構(gòu)和包含一個帶有兩個元素s鍵_8 fruit9和8vegetable結(jié)構(gòu)2調(diào)試程序甚能夠輸出列表的列表之類的復(fù)雜數(shù)據(jù)結(jié)構(gòu),如O示N面的例子顯示了一$a,它指向一個數(shù)ARRY0 x20170bd4而個數(shù),s ARRAY0 x201154841ARRAY0 x2011fbb4和 0 x2011faa0,每個數(shù)包含3個元素模塊DataDumper包 0 x2011faa0,每個數(shù)包含3個元素模塊DataDumper包含的一些函數(shù)能夠顯示二的,它的輸出格式是有效的Perl格式,它可入文件,并在被檢索,提供可儲結(jié)構(gòu)2DataDumper

15、模塊將在第14學(xué)時中介紹13.3 習(xí):另一當(dāng)你學(xué)了那N多的新奇概念和結(jié)構(gòu)之,需要來一點了2O面,并你可做一個簡單的游采用探險和狩獵之類的傳統(tǒng)游o方式,你被置于一個迷宮之中,必須找到你的出路個迷宮并無奇特之處,它是由一些間p,并每個間少有一個門2門可通向位于東1南1西1X的相鄰間2個游o的目的是找到一間密室2你會發(fā)通往密室有,外有許多走O通的路輸出13-2,并將它保Maze2運行程序,得到類似程13-1程13-程13- 第12行兩行碼是Perl程序l常的開始2-w使警 第12行兩行碼是Perl程序l常的開始2-w使警告特性被激活usestrict用于捕獲第49行用于定O述迷宮maze的結(jié)構(gòu)2顯示

16、的迷宮是個 44的柵格,用一個列表的有一個間 2,1是無法進(jìn)入的,在個結(jié)構(gòu)中用一個 - 來表示個間2實際N第1011行當(dāng)游o的玩向X或向南移時,迷宮中的當(dāng)前位置就需更2哈希結(jié)構(gòu)%direction用來根據(jù)老的位置和移方向計算玩新位置2如果向X=移,則使玩的x坐標(biāo)移-1向N,y坐標(biāo)保持O2如果向東=移,則玩的 x坐標(biāo)O,而y坐標(biāo)增12你將在第3334行碼中看到坐標(biāo)的更情況第1315行程序中使用的量用 my進(jìn),便使 use strict p當(dāng)?shù)剡\行2放$curr_x和$curr_y中的玩當(dāng)前位置被置0,02最目的地$x和$y被置3,32第17行根據(jù)柵格中的x,y坐標(biāo),函數(shù)顯示玩可在每個間中移的方向

17、2第20行在$maze$cx$cy的間述中選擇_母n1s1e和w,每次選擇1個_母2希結(jié)構(gòu)full中顯示nsew方向的相應(yīng)述2個哈希結(jié)構(gòu)用于將短_ n)轉(zhuǎn)換p目 (Norfh),供顯示之用第25行函數(shù)出一個方向放在$new中和對玩2第28行方向用lc改小寫_母, substr出第一個_母,并將它 (Norfh),供顯示之用第25行函數(shù)出一個方向放在$new中和對玩2第28行方向用lc改小寫_母, substr出第一個_母,并將它賦予$new2樣, s第29行搜索當(dāng)前間的$maze$xref$yref,找出給定的方向n1s1e和w 2如果 2第3334行玩的x和y坐標(biāo)被更改2如果方向是e,則$d

18、irectione是對兩個元素的數(shù)01 2x坐標(biāo)將遞增0,s$directione02Y坐標(biāo)將遞增第37行程序的體啟運行2循將O斷運行,直到玩的x和y坐標(biāo) 第39行需要的移方向讀入$move,用chomp刪除換行符2如果玩鍵入q開頭的任 move_to(move_to()子例程通過調(diào)整$curr_x和$curr_y,使玩作相應(yīng)的移若要修改迷宮,使之采用一種布局,需改放在 maze中的柵格2迷宮O一定需要做pl方形,_O需要給每個間制作映像,甚O需要在一有效的路徑2O過請住,迷宮O要它邊N的某個間開始2程序O會檢查迷宮的有效性,O過,如果你創(chuàng)一個無效迷宮, Perl就會發(fā)出警告2如果要移迷宮中的密室,需改$x和$y的值本學(xué)時q們介量1數(shù)和哈希結(jié)構(gòu)的基本概念2首先,講述了如何創(chuàng)建對 Perl的基本數(shù)據(jù)結(jié)2然,介紹了如何使用,對原始數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作沒有Pm相s的量接著,說明了如何創(chuàng)建對哈希結(jié)構(gòu)或數(shù),過種稱匿儲2最介紹了如何使來創(chuàng)建復(fù)雜的數(shù)據(jù)結(jié)構(gòu)及何處可有數(shù)據(jù)結(jié)構(gòu)的文檔資料問題: 當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論