隨筆-193  評論-715  文章-1  trackbacks-0
          作為一個合格的架構師,不了解好的腳本語言,是一處不小的硬傷,所以我要補課!

          perl 被設計為90%處理文本,10%針對其它情況。
          在Perl內部,沒有整型,全當雙精度浮點型來處理。
          雙引號字符串內會變量內插

          字符串可用“.”操作符連接。
          字符串重復操作符“x”,可將左邊的字符串重復多少次,如"f"x3  # "fff"

          變量的名字由“$”開頭,后接變量名。

          用戶輸入用<STDIN>
          chomp函數,去掉字符串尾的換行符。chomp是一個函數,作為函數,它有一個返回值。$b=chomp <STDIN>; #返回值是1。
          在perl中,()通常可以省略。

          undef值:Perl程序員在使用新變量時,經常不初始化,從而將變量作為0或空串使用。要分辨是undef還是真正的空串,可以用defined函數,它將在undef時返回false,其余返回true。如果想自己聲明undef值,可以使用undef:,如:
          $a=undef;

          (1..100),這種定義方式包含100個整數的列表。“..”是range oprator。
          在Perl中,字符串列表會經常使用,有一種簡便的方法可以不用輸入大量的引號,而達到類似的功能,那就是使用qw。如:
          qw(abc abcd abcde abcdef) #同("abc","abcd","abcde","abcdef")
          qw表示quoted words或者“quoted by whitespace”。Perl將它們當作單引號字符串處理,不能像雙引號那樣在qw中使用\n和$var。
          Perl中還允許用任何符號來作為分界符,如下,也一樣:
          qw! fred barney betty wilma dino !
          qw# fred barney betty wilma dino #
          qw( fred barney betty wilma dino )
          qw{ fred barney betty wilma dino }
          qw[ fred barney betty wilma dino ]
          qw< fred barney betty wilma dino >
          列表賦值:($fred, $barney, $dino) = (“flintstone”, “rubble”, undef);
          變量交換(swap函數,很方便也很邪乎):
          ($fred, $barney) = ($barney, $fred) #交換兩個變量
          ($betty[0],$betty[1]) = ($betty[1],$betty[0]);

          數組不能成為列表的一個元素的原因是數組只能包含標量值,不能包含其它的數組。
          @copy = @quarry;#將一個數組的值拷貝到另一個數組中

          push的第一個參數或者pop的唯一參數必須是數組變量。他們對數組的結尾進行操作。
          shift和unshift對一個數組的開頭進行操作。

          和標量類似,數組也可以插入雙引號的字符串中,插入的數組元素會自動由空格分開。

          Perl最常用的默認變量:$_,如下例:
          $_ ="Yabba dabba doo\n"
          print;

          reverse函數會返回逆轉的列表,它不會改變其參數的值,所以如果返回值沒有賦值給某個變量,那這樣操作是沒有什么意義的。sort函數也一樣。

           


          一個給定的表達式在不同的上下文中其含義是不同的。
          如:一個數組的“name”,在列表上下文中,它返回列表元素,在標量上下文中,它返回數組元素的個數。
          數組@people的真實名字是people。@只是一個限定詞(qualifier)。
          甚至普通的賦值也產生不同的上下文:
          @people = qw( fred barney betty );
          @list=@people; #3個people的列表
          $n=@people; #數字3
          可以用scalar函數在上下文中將列表轉換為標量。如:
          @rocks = qw(talc quartz jade obsidian);
          print "I have ", scalar @rocks, "rocks!\n"

          文件結束符:*nix系統中用Ctrl+D,在DOS中,用Ctrl+Z。


          定義一個子程序的方式如下:
          sub marine {
            $n + = 1;
            print "Hello, sailor number $n!\n";
          }
          如果兩個子程序同名,則后一個將覆蓋前一個。
          可以使用子程序的名字(帶有&)來調用子程序。
          將參數傳遞給子程序中的方法是,在程序后面接括號,括號內存放參數列表。
          在Perl中,會自動將參數列表自動存放在一個叫做@_的數組中。也就是說此子程序參數的第一個值存放在$_[0]中,第二個存放在$_[1]中,依次類推。

          可以任意時候使用my創建私有變量。如:
          sub max {
            my($m,$n);
            ($m,$n) = @_; #可以這樣寫,將聲明和賦值放一起:my($m,$n)=@_;
            if($m > $n) {
              $m
            } else{
              $n
            }
          }
          在調用Perl的函數時,可以省略&,但函數的定義必須在調用之前。如果子程序和Perl一個內嵌程序同名,則必須使用&來調用它。


          while (defined($line = <STDIN>)) {
            print "I saw $line";
          }
          使用defined來檢測輸入是否結束。
          <>(尖括號操作符)是一種特殊的行輸入操作。
          在Unix中,-(連接號)代表標準輸入流。

           

           

          posted on 2009-05-31 00:23 Robin's Programming World 閱讀(2054) 評論(5)  編輯  收藏 所屬分類: 其它

          評論:
          # re: Perl學習筆記(一) 2009-05-31 00:34 | Robin's Java World
          誰能告訴我寫文章時,編輯器為何不能打開了?
          所以文本都沒有換行。郁悶!!!  回復  更多評論
            
          # re: Perl學習筆記(一) 2009-05-31 09:14 | freeion
          哥們,在word編輯一下再貼上來吧。。沒法看呀!!  回復  更多評論
            
          # re: Perl學習筆記(一) 2009-05-31 10:16 | Robin's Java World
          @freeion
          不知道為什么就沒有編輯器了?
          Dudu大哥出來說句話呀!!!  回復  更多評論
            
          # re: Perl學習筆記(一) 2009-05-31 10:18 | Robin's Java World
          @freeion
          試了,從Word里貼進來也不行。
          關鍵是編輯器不見了。  回復  更多評論
            
          # re: Perl學習筆記(一) 2009-05-31 11:18 | Robin's Java World
          在管理員的協助下,終于好了。  回復  更多評論
            
          主站蜘蛛池模板: 四川省| 集贤县| 梁平县| 太仆寺旗| 铅山县| 潼关县| 万山特区| 城口县| 屯昌县| 余江县| 藁城市| 昭平县| 安陆市| 攀枝花市| 鹿泉市| 金湖县| 镇原县| 阜宁县| 南开区| 绥德县| 安顺市| 莱芜市| 潢川县| 拜泉县| 邵阳县| 邹平县| 房产| 伊宁县| 晴隆县| 响水县| 易门县| 丘北县| 五华县| 乾安县| 云阳县| 页游| 咸丰县| 安庆市| 阳江市| 手机| 涟水县|