• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰(shuí)的技術(shù)博客

            感興趣領(lǐng)域:高性能服務(wù)器編程,存儲(chǔ),算法,Linux內(nèi)核
            隨筆 - 210, 文章 - 0, 評(píng)論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

            Perl學(xué)習(xí)筆記(一)--變量

            Perl中的變量有三種:標(biāo)量,數(shù)組,以及Hash表.

            標(biāo)量可以存放的數(shù)據(jù)類(lèi)型有很多,除了常用的字符串和數(shù)字外,還可以存放引用, 而引用則可以是任何類(lèi)型數(shù)據(jù)的引用.
            比如:
            @array = (1, 2, 3);
            $ref = \@array; #創(chuàng)建一個(gè)對(duì)數(shù)組array的引用
            注意引用的使用方法是, 在所引用的對(duì)象前面加上\,而在解引用的時(shí)候需要記住的是引用是一個(gè)標(biāo)量,所以$ref表示的是一個(gè)引用, 要繼續(xù)解釋該引用所引用的數(shù)據(jù)還需要根據(jù)引用的數(shù)據(jù)類(lèi)型進(jìn)一步加以解釋,比如:
            如果標(biāo)量$ref引用的是一個(gè)數(shù)組, 那么: $ref->[0], 或者$$ref[0], 或者$($ref)[0], 都是取得該數(shù)組的第一個(gè)元素.
            如果標(biāo)量$ref引用的是一個(gè)Hash表, 那么: $ref->{key}, 或者$$ref{key}, 或者$($ref){key}, 都是取得該Hash表中鍵為key的value.
            如果標(biāo)量$ref引用的是一個(gè)函數(shù), 那么: &$ref, 或者&($ref), 都是取得對(duì)該函數(shù)的調(diào)用.
            為了方便理解記憶Perl中的引用使用方法,可以把$ref理解為所引用之物的名字, 比如$$ref[0]中, 將$ref理解為array, 那么$$ref[0]可以解釋為$array[0].或者, 用C中指針的方式來(lái)理解Perl中引用->符號(hào)的使用, 將$ref理解為一個(gè)"指針", 而在->右邊, 需要根據(jù)所引用的類(lèi)型進(jìn)行解釋, 比如數(shù)組就是[], Hash表就是{}, 等等.

            列表與數(shù)組
            <<Perl語(yǔ)言入門(mén)>>(小駱駝)中介紹數(shù)組的那一章開(kāi)始部分說(shuō)的很明白:列表是數(shù)據(jù)的序列, 而數(shù)組是變量.比如:
            @array = (1,2,3);
            array是一個(gè)數(shù)組, 它是一個(gè)變量;而(1,2,3)則是一個(gè)列表, 它是由標(biāo)量1,2,3組成.

            Hash
            Hash表在賦值的時(shí)候常采用如下的方式:
            %hash = (key=>value);
            在Perl中, 使用一個(gè)列表對(duì)Hash進(jìn)行賦值, 分別是key1 value1 key2 value2...依次類(lèi)推, 也就是說(shuō), 當(dāng)采用一個(gè)列表對(duì)Hash進(jìn)行賦值操作的時(shí)候, 鍵/值是交替出現(xiàn)的, 而在Perl中"=>"和","的意義是一樣的, 放在對(duì)Hash進(jìn)行賦值的列表中, 增加了代碼的可讀性.
            同時(shí)注意到, 在Perl中, Hash的鍵都是字符串, 但是在{}之中的的鍵可以不加""或者''號(hào), 比如$hash{key}, $hash{"key"}, $hash{'key'}都是一個(gè)意思.

            在Perl中, 如果僅需要取得一個(gè)數(shù)據(jù)的時(shí)候, 需要采用$符號(hào).標(biāo)量自不必解釋, 對(duì)數(shù)組而言, $array[0]是取得第一個(gè)數(shù)組元素, 而對(duì)Hash而言, $Hash{key}是取得鍵為key的值.
            而要取得數(shù)組或者Hash中的部分元素時(shí),使用@符號(hào), 如@array[0,1]返回?cái)?shù)組array中的第一和第二個(gè)元素組成的列表, @hash{key1, key2}返回hash中鍵為key1, key2的值組成的列表.注意沒(méi)有%hash{key1}這樣的語(yǔ)法, 如果要取得所有的數(shù)組,使用@array;如果要取得全部Hash中的元素, 包括key和value,則使用%hash.

            變量的內(nèi)插(Interpolating)
            當(dāng)把一個(gè)數(shù)組變量在""中內(nèi)插的時(shí)候, 則將該數(shù)組中的各個(gè)元素用變量$"(通常是空格)分隔開(kāi)組合成一個(gè)字符串, 因此:
            $temp = join( $", @ARGV );
            print $temp;

            print "@ARGV";
            的意義是一樣的.
            而如果一個(gè)數(shù)組不放在""中進(jìn)行內(nèi)插的話, 僅僅返回這個(gè)數(shù)組的所有元素組成的列表,如:
            @array = (1,2,3);
            print @array;
            得到的是:123(注意123之間沒(méi)有空格分隔).

            不存在對(duì)整個(gè)Hash的內(nèi)插, 比如變量hash是一個(gè)Hash表, 那么:
            print "%hash";
            僅僅打印出%hash, 它并沒(méi)有針對(duì)該Hash進(jìn)行內(nèi)插.
            變量?jī)?nèi)插僅僅針對(duì)$和@作用的變量.





            posted on 2008-07-30 23:15 那誰(shuí) 閱讀(1173) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Perl

            天天综合久久一二三区| 日日噜噜夜夜狠狠久久丁香五月| 久久99精品久久久久久野外| 一本久久免费视频| 777米奇久久最新地址| 久久精品国产99久久香蕉| 精品久久久久久国产| 婷婷综合久久狠狠色99h| 无码国内精品久久人妻麻豆按摩| 久久综合给合久久狠狠狠97色 | 久久亚洲AV无码西西人体| 精品久久久久久国产| 久久久久久国产精品免费免费| 国内精品久久久久久久久电影网| 欧美一区二区精品久久| 亚洲国产欧洲综合997久久| 久久久久亚洲爆乳少妇无| 国产精品久久久久…| 一本大道久久东京热无码AV| 国产精品综合久久第一页| 久久亚洲精品人成综合网| 久久久久久久女国产乱让韩| 久久久久女教师免费一区| 久久伊人精品青青草原高清| 2021精品国产综合久久| 亚洲日韩中文无码久久| 日韩人妻无码一区二区三区久久99| 久久91这里精品国产2020| 久久久久一区二区三区| 国产精品久久永久免费| 久久亚洲精品国产精品| 久久久精品人妻一区二区三区四 | www久久久天天com| 日韩精品久久无码中文字幕| 思思久久好好热精品国产| 久久这里有精品视频| 欧美久久久久久午夜精品| 久久国产精品二国产精品| 久久久久久一区国产精品| 欧美久久综合九色综合| 色婷婷久久综合中文久久一本|