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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

12、列表中的某個(gè)列表的元素?cái)?shù)目,可能有一點(diǎn)兒麻煩2語(yǔ) $list_of_lists1回list_of_lists2如果將它輸出,則顯示類似ARR0 x00000個(gè)數(shù)據(jù)若要將list_of_lists的一個(gè)元素當(dāng)作數(shù)來(lái)處理,請(qǐng)?jiān)谒那懊鍺一個(gè)符號(hào) ,如示若要遍歷列表的列表中的每個(gè)元素,可使用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)的形合起來(lái),創(chuàng)建更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如O面些結(jié)構(gòu)哈希結(jié)構(gòu)的哈希結(jié)構(gòu)由于本書篇幅有限,無(wú)法一一介紹有些結(jié)構(gòu)2你安裝的每個(gè) Perl含了一個(gè)稱 Perl Data Stru

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

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

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

16、的迷宮是個(gè) 44的柵格,用一個(gè)列表的有一個(gè)間 2,1是無(wú)法進(jìn)入的,在個(gè)結(jié)構(gòu)中用一個(gè) - 來(lái)表示個(gè)間2實(shí)際N第1011行當(dāng)游o的玩向X或向南移時(shí),迷宮中的當(dāng)前位置就需更2哈希結(jié)構(gòu)%direction用來(lái)根據(jù)老的位置和移方向計(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ù)剡\(yùn)行2放$curr_x和$curr_y中的玩當(dāng)前位置被置0,02最目的地$x和$y被置3,32第17行根據(jù)柵格中的x,y坐標(biāo),函數(shù)顯示玩可在每個(gè)間中移的方向

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論