亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? perl12.htm

?? Perl作為一門重要的工程語言
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
              24 &nbsp; printf '$pointer->{$i} is ';<br>
              25<br>
              26 &nbsp; printf "$pointer->{$i}\n";<br>
              27 #<br>
              28 # These next two lines should not show anything 29 #<br>
              30 &nbsp; printf '${$pointer{$i}} is ';<br>
              31 &nbsp; printf "${$pointer{$i}} \n";<br>
              32 &nbsp; printf '${$pointer->{$i}} is ';<br>
              33 &nbsp; printf "${$pointer->{$i}}";<br>
              34 printf "\n ================== end of test ================= \n";<br>
              35</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;結果輸出如下:<br>
            <blockquote>================== start test =================<br>
              $$pointer{$i} is Fri<br>
              ${$pointer}{$i} is Fri<br>
              $pointer->{$i} is Fri<br>
              ${$pointer{$i}} is<br>
              ${$pointer->{$i}} is<br>
              ================== end of test =================</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;可以看到,前三種形式的輸出顯示了預期的結果,而后兩種則沒有。當你不清楚是否正確時,就輸出結果看看。在Perl中,有不明確的代碼就用print語句輸出來實驗一下,這能使你清楚Perl是怎樣解釋你的代碼的。<br>
            <a name=5>五、多維數組</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;語句@array = list;可以創建數組的引用,中括號可以創建匿名數組的引用。下面語句為用于畫圖的三維數組的例子:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$line = ['solid' , 'black' , ['1','2','3'] 
            , ['4','5','6']];<br>
            &nbsp;&nbsp;&nbsp;&nbsp;此語句建立了一個含四個元素的三維數組,變量$line指向該數組。前兩個元素是標量,存貯線條的類型和顏色,后兩個元素是匿名數組的引用,存貯線條的起點和終點。訪問其元素語法如下:<br>
            <blockquote>$arrayReference->[$index] &nbsp; &nbsp; single-dimensional 
              array<br>
              $arrayReference->[$index1][$index2] &nbsp; two-dimensional array<br>
              $arrayReference->[$index1][$index2][$index3] three-dimensional array</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;可以創建在你的智力、設計經驗和計算機的內存允許的情況下極盡復雜的結構,但最好對可能讀到或管理你的代碼的人友好一些--盡量使代碼簡單些。另一方面,如果你想向別人炫耀你的編程能力,Perl給你足夠的機會和能力編寫連自己都難免糊涂的代碼。:)<br>
            &nbsp;&nbsp;&nbsp;&nbsp;建議:當你想使用多于三維的數組時,最好考慮使用其它數據結構來簡化代碼。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;下面為創建和使用二維數組的例子:<br>
            <blockquote>1&nbsp; #!/usr/bin/perl<br>
              2&nbsp; #<br>
              3&nbsp; # Using Multi-dimensional Array references<br>
              4&nbsp; #<br>
              5&nbsp; $line = ['solid', 'black', ['1','2','3'] , ['4', '5', '6']];<br>
              6&nbsp; print "\$line->[0] = $line->[0] \n";<br>
              7&nbsp; print "\$line->[1] = $line->[1] \n";<br>
              8&nbsp; print "\$line->[2][0] = $line->[2][0] \n";<br>
              9&nbsp; print "\$line->[2][1] = $line->[2][1] \n";<br>
              10 print "\$line->[2][2] = $line->[2][2] \n";<br>
              11 print "\$line->[3][0] = $line->[3][0] \n";<br>
              12 print "\$line->[3][1] = $line->[3][1] \n";<br>
              13 print "\$line->[3][2] = $line->[3][2] \n";<br>
              14 print "\n"; # The obligatory output beautifier.</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;結果輸出如下:<br>
            <blockquote>$line->[0] = solid<br>
              $line->[1] = black<br>
              $line->[2][0] = 1<br>
              $line->[2][1] = 2<br>
              $line->[2][2] = 3<br>
              $line->[3][0] = 4<br>
              $line->[3][1] = 5<br>
              $line->[3][2] = 6</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;那么三維數組又如何呢?下面是上例略為改動的版本。<br>
            <blockquote>1&nbsp; #!/usr/bin/perl<br>
              2&nbsp; #<br>
              3&nbsp; # Using Multi-dimensional Array references again<br>
              4&nbsp; #<br>
              5&nbsp; $line = ['solid', 'black', ['1','2','3', ['4', '5', '6']]];<br>
              6&nbsp; print "\$line->[0] = $line->[0] \n";<br>
              7&nbsp; print "\$line->[1] = $line->[1] \n";<br>
              8&nbsp; print "\$line->[2][0] = $line->[2][0] \n";<br>
              9&nbsp; print "\$line->[2][1] = $line->[2][1] \n";<br>
              10 print "\$line->[2][2] = $line->[2][2] \n";<br>
              11 print "\$line->[2][3][0] = $line->[2][3][0] \n";<br>
              12 print "\$line->[2][3][1] = $line->[2][3][1] \n";<br>
              13 print "\$line->[2][3][2] = $line->[2][3][2] \n";<br>
              14 print "\n";</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;結果輸出如下:<br>
            <blockquote>$line->[0] = solid<br>
              $line->[1] = black<br>
              $line->[2][0] = 1<br>
              $line->[2][1] = 2<br>
              $line->[2][2] = 3<br>
              $line->[2][3][0] = 4<br>
              $line->[2][3][1] = 5<br>
              $line->[2][3][2] = 6</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;訪問第三層元素的方式形如$line->[2][3][0],類似于C語言中的Array_pointer[2][3][0]。本例中,下標均為數字,當然亦可用變量代替。用這種方法可以把數組和哈希表結合起來構成復雜的結構,如下:<br>
            <blockquote>1 #!/usr/bin/perl<br>
              2 #<br>
              3 # Using Multi-dimensional Array and Hash references<br>
              4 #<br>
              5 %cube = (<br>
              6 '0', ['0', '0', '0'],<br>
              7 '1', ['0', '0', '1'],<br>
              8 '2', ['0', '1', '0'],<br>
              9 '3', ['0', '1', '1'],<br>
              10 '4', ['1', '0', '0'],<br>
              11 '5', ['1', '0', '1'],<br>
              12 '6', ['1', '1', '0'],<br>
              13 '7', ['1', '1', '1']<br>
              14 );<br>
              15 $pointer = \%cube;<br>
              16 print "\n Da Cube \n";<br>
              17 foreach $i (sort keys %$pointer) {<br>
              18 $list = $$pointer{$i};<br>
              19 $x = $list->[0];<br>
              20 $y = $list->[1];<br>
              21 $z = $list->[2];<br>
              22 printf " Point $i = $x,$y,$z \n";<br>
              23 }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;結果輸出如下:<br>
            <blockquote>Da Cube<br>
              Point 0 = 0,0,0<br>
              Point 1 = 0,0,1<br>
              Point 2 = 0,1,0<br>
              Point 3 = 0,1,1<br>
              Point 4 = 1,0,0<br>
              Point 5 = 1,0,1<br>
              Point 6 = 1,1,0<br>
              Point 7 = 1,1,1</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;這是一個定義立方體的例子。%cube中保存的是點號和坐標,坐標是個含三個數字的數組。變量$list獲取坐標數組的引用:$list 
            = $$ pointer{$i}; 然后訪問各坐標值:$x = $list->[0]; ... 也可用如下方法給$x、$y和$z賦值:($x,$y,$z) 
            = @$list;<br>
            &nbsp;&nbsp;&nbsp;&nbsp;使用哈希表和數組時,用$和用->是類似的,對數組而言下面兩個語句等效:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$$names[0] = "kamran";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$names->[0] = "kamran";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;對哈希表而言下面兩個語句等效:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$$lastnames{"kamran"} = "Husain";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$lastnames->{"kamran"} = "Husain";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;Perl中的數組可以在運行中創建和擴展。當數組的引用第一次在等式左邊出現時,該數組自動被創建,簡單變量和多維數組也是一樣。如下句,如果數組contours不存在,則被創建:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$contours[$x][$y][$z] = &xlate($mouseX, $mouseY);<br>
            <a name=6>六、子程序的引用</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;perl中子程序的引用與C中函數的指針類似,構造方法如下:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$pointer_to_sub = sub {... declaration of 
            sub ...};<br>
            &nbsp;&nbsp;&nbsp;&nbsp;通過所構造的引用調用子程序的方法為:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&$pointer_to_sub(parameters);<br>
            <ul>
              <li><a name="6.1">子程序模板</a></li>
            </ul>
            <br>
            &nbsp;&nbsp;&nbsp;&nbsp;子程序的返回值不僅限于數據,還可以返回子程序的引用。返回的子程序在調用處執行,但卻是在最初被創建的調用處被設置,這是由Perl對Closure處理的方式決定的。Closure意即如果你定義了一個函數,它就以最初定義的內容運行。(Closure詳見OOP的參考書)下面的例子中,設置了多個錯誤信息顯示子程序,這樣的子程序定義方法可用于創建模板。<br>
            <blockquote>#!/usr/bin/perl<br>
              sub errorMsg {<br>
              &nbsp; my $lvl = shift;<br>
              &nbsp; #<br>
              &nbsp; # define the subroutine to run when called.<br>
              &nbsp; #<br>
              &nbsp; return sub {<br>
              &nbsp; &nbsp; my $msg = shift; # Define the error type now.<br>
              &nbsp; &nbsp; print "Err Level $lvl:$msg\n"; }; # print later.<br>
              &nbsp; }<br>
              $severe = errorMsg("Severe");<br>
              $fatal = errorMsg("Fatal");<br>
              $annoy = errorMsg("Annoying");<br>
              <br>
              &$severe("Divide by zero");<br>
              &$fatal("Did you forget to use a semi-colon?");<br>
              &$annoy("Uninitialized variable in use");</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;結果輸出如下:<br>
            <blockquote>Err Level Severe:Divide by zero<br>
              Err Level Fatal:Did you forget to use a semi-colon?<br>
              Err Level Annoying:Uninitialized variable in use</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;上例中,子程序errorMsg使用了局域變量$lvl,用于返回給調用者。當errorMsg被調用時,$lvl的值設置到返回的子程序內容中,雖然是用的my函數。三次調用設置了三個不同的$lvl變量值。當errorMsg返回時,$lvl的值保存到每次被聲明時所產生的子程序代碼中。最后三句對產生的子程序引用進行調用時$msg的值被替換,但$lvl的值仍是相應子程序代碼創建時的值。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;很混淆是嗎?是的,所以這樣的代碼在Perl程序中很少見。<br>
            <a name=7>七、數組與子程序</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;數組利于管理相關數據,本節討論如何向子程序傳遞多個數組。前面我們講過用@_傳遞子程序的參數,但是@_是一個單維數組,不管你傳遞的參數是多少個數組,都按序存貯在@_中,故用形如my(@a,@b)=@_; 
            的語句來獲取參數值時,全部值都賦給了@a,而@b為空。那么怎么把一個以上的數組傳遞給子程序呢?方法是用引用。見下例:<br>
            <blockquote>#!/usr/bin/perl<br>
              @names = (mickey, goofy, daffy );<br>
              @phones = (5551234, 5554321, 666 );<br>
              $i = 0;<br>
              sub listem {<br>
              &nbsp; my ($a,$b) = @_;<br>
              &nbsp; foreach (@$a) {<br>
              &nbsp; &nbsp; print "a[$i] = " . @$a[$i] . " " . "\tb[$i] = " . 
              @$b[$i] ."\n";<br>
              &nbsp; &nbsp; $i++;<br>
              &nbsp; }<br>
              }<br>
              &listem(\@names, \@phones);</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;結果輸出如下:<br>
            <blockquote>
              <pre>
a[0] = mickey     b[0] = 5551234
a[1] = goofy      b[1] = 5554321
a[2] = daffy      b[2] = 666</pre>
            </blockquote>
            注意:
            <blockquote>1、當想傳遞給子程序的參數是多于一個的數組時一定要使用引用。<br>
              2、一定不要在子程序中使用形如 (@variable)=@_; 的語句處理參數,除非你想把所有參數集中到一個長的數組中。</blockquote>
            <a name=8>八、文件句柄的引用</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;有時,必須將同一信息輸出到不同的文件,例如,某程序可能在一個實例中輸出到屏幕,另一個輸出到打印機,再一個輸出到記錄文件,甚至同時輸出到這三個文件。相比較于每種處理寫一個單獨的語句,可以有更好的實現方式如下:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;spitOut(\*STDIN);<br>
            &nbsp;&nbsp;&nbsp;&nbsp;spitOut(\*LPHANDLE);<br>
            &nbsp;&nbsp;&nbsp;&nbsp;spitOut(\*LOGHANDLE);<br>
            &nbsp;&nbsp;&nbsp;&nbsp;其中子程序spitOut的代碼如下:<br>
            <blockquote>sub spitOut {<br>
              &nbsp; my $fh = shift;<br>
              &nbsp; print $fh "Gee Wilbur, I like this lettuce\n";<br>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;注意其中文件句柄引用的語法為\*FILEHANDLE。<br>
            <p align=center><a href=perl11.htm>上一章</a> <a href=perl13.htm>下一章</a> 
              <a href=index.htm>目錄</a></p>
            <p align=center>&nbsp; </p>
            <!-- #EndEditable --></td>
        </tr>
      </table>
    </td></tr></table></body><!-- #EndTemplate --></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线观看国产精品| 99久久精品国产麻豆演员表| 狠狠色狠狠色综合| 91麻豆免费观看| 欧美成人video| 亚洲精品乱码久久久久久久久| 男女性色大片免费观看一区二区 | 国产亚洲欧美激情| 天堂成人免费av电影一区| 波多野结衣亚洲一区| 777午夜精品免费视频| 亚洲精品写真福利| 成人av影视在线观看| 精品国产乱码久久久久久夜甘婷婷| 亚洲一区二区三区四区在线| 97se亚洲国产综合自在线| 久久综合精品国产一区二区三区| 日韩精品乱码免费| 欧美三级视频在线| 亚洲综合在线免费观看| 成人99免费视频| 久久伊人蜜桃av一区二区| 美女视频黄 久久| 欧美一区二区免费视频| 亚洲国产精品久久艾草纯爱| 91视视频在线观看入口直接观看www| 国产日韩欧美不卡在线| 极品少妇一区二区| 精品国产成人在线影院| 精品在线免费观看| 日韩精品一区二区三区四区| 视频在线在亚洲| 欧美日韩aaaaa| 亚洲成人你懂的| 7777女厕盗摄久久久| 免费成人小视频| 久久尤物电影视频在线观看| 黑人精品欧美一区二区蜜桃 | **性色生活片久久毛片| 丁香婷婷深情五月亚洲| 欧美国产精品v| 99久久精品国产导航| 亚洲精品成人在线| 欧美在线一二三四区| 亚洲小少妇裸体bbw| 欧美日韩一卡二卡三卡 | 国产成人av电影在线观看| 国产婷婷一区二区| 99视频一区二区| 亚洲激情五月婷婷| 欧美精品777| 久久99国内精品| 国产农村妇女毛片精品久久麻豆 | 国产成人欧美日韩在线电影| 中文字幕不卡一区| 欧洲精品一区二区| 奇米综合一区二区三区精品视频| 日韩精品一区二| 成人av在线影院| 香蕉成人啪国产精品视频综合网| 日韩一级黄色大片| 懂色av一区二区三区免费看| 一区二区三区中文字幕精品精品| 91精品综合久久久久久| 国产精品亚洲人在线观看| 亚洲卡通动漫在线| 欧美videossexotv100| 成人午夜精品在线| 视频一区欧美日韩| 亚洲欧洲在线观看av| 欧美日韩免费电影| 国产精品一二三在| 亚洲无人区一区| 中文字幕精品一区二区精品绿巨人| 欧美中文字幕一区二区三区| 精品亚洲国内自在自线福利| 国产精品第四页| 精品人在线二区三区| 99re亚洲国产精品| 久久66热re国产| 又紧又大又爽精品一区二区| 久久老女人爱爱| 欧美日韩色一区| caoporn国产精品| 久久丁香综合五月国产三级网站| 最新热久久免费视频| 日韩色视频在线观看| 色妹子一区二区| 国产风韵犹存在线视精品| 日韩av二区在线播放| 一区二区免费视频| 中文字幕第一区第二区| 久久精品欧美一区二区三区不卡 | 国产亚洲美州欧州综合国| 欧美男男青年gay1069videost| 9i看片成人免费高清| 国产成人在线免费观看| 日本不卡一二三区黄网| 天天色综合成人网| 亚洲乱码中文字幕综合| 国产精品九色蝌蚪自拍| 国产欧美一区在线| 久久精品视频一区二区三区| 久久伊99综合婷婷久久伊| 欧美tickling挠脚心丨vk| 欧美色网一区二区| 日本韩国一区二区| 99精品久久只有精品| 国产一区视频导航| 一区二区三区在线观看欧美 | 色婷婷综合视频在线观看| 久久精品99国产国产精| 亚洲午夜av在线| 午夜精品久久久久| 亚洲综合精品自拍| 亚洲精品乱码久久久久| 日本一区二区三区在线不卡| 欧美极品另类videosde| 久久一日本道色综合| 欧美性生活大片视频| 91小宝寻花一区二区三区| 国产成人综合在线| 成人午夜视频福利| 国产精品系列在线播放| 久久99国产精品成人| 喷水一区二区三区| 天天射综合影视| 日韩精品视频网| 青草国产精品久久久久久| 婷婷成人激情在线网| 午夜视频一区二区三区| 亚洲午夜视频在线| 午夜亚洲国产au精品一区二区| 亚洲v日本v欧美v久久精品| 一区av在线播放| 亚洲成人www| 亚洲超丰满肉感bbw| 亚洲va在线va天堂| 日本美女视频一区二区| 免费高清在线一区| 久久电影国产免费久久电影| 国产一本一道久久香蕉| 国模一区二区三区白浆| 国产麻豆一精品一av一免费| 国产精品99久久久| aaa欧美大片| 欧美体内she精高潮| 欧美xxxxx牲另类人与| 中文字幕av一区二区三区免费看| 国产精品国产三级国产普通话99| 亚洲激情图片qvod| 日本伊人色综合网| 狠狠色狠狠色综合| 欧美天天综合网| 日韩欧美一级在线播放| 国产日本亚洲高清| **网站欧美大片在线观看| 婷婷夜色潮精品综合在线| 麻豆国产精品官网| 精品一区二区久久| 色婷婷综合久色| 日韩欧美电影在线| 欧美精彩视频一区二区三区| 亚洲欧美日韩中文播放| 久久电影国产免费久久电影| 暴力调教一区二区三区| 欧美日韩国产小视频在线观看| 精品国产91久久久久久久妲己| 国产精品久久久99| 免播放器亚洲一区| 97精品久久久午夜一区二区三区| 欧美日韩国产不卡| 国产精品午夜久久| 亚洲一区二区三区三| www.亚洲色图.com| 欧美一级久久久| 亚洲精选在线视频| 精品一二线国产| 欧美不卡123| 亚洲国产精品视频| 成人午夜碰碰视频| 欧美裸体bbwbbwbbw| 亚洲综合在线第一页| 狠狠色丁香婷综合久久| 精品视频在线免费看| 久久久天堂av| 国产精品一区二区免费不卡| 欧美三级一区二区| 亚洲欧洲美洲综合色网| 免费在线成人网| 欧美精品自拍偷拍| 亚洲综合视频在线| 不卡在线观看av| 国产喂奶挤奶一区二区三区| 欧美bbbbb| 欧美日韩高清一区二区三区| 亚洲色图视频网| 波多野结衣中文字幕一区二区三区| 日韩久久免费av| 丝袜脚交一区二区|