隨筆-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創(chuàng)建私有變量。如:
          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 閱讀(2055) 評論(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
          在管理員的協助下,終于好了。  回復  更多評論
            
          主站蜘蛛池模板: 建德市| 民权县| 北票市| 临夏县| 岗巴县| 理塘县| 淮阳县| 青海省| 峨边| 进贤县| 乐业县| 龙川县| 普安县| 镇坪县| 琼结县| 夏河县| 尼玛县| 屯门区| 陵水| 陇川县| 江门市| 龙南县| 昌黎县| 高尔夫| 南溪县| 民权县| 浮梁县| 台中县| 黄冈市| 龙井市| 温泉县| 民权县| 贡山| 峡江县| 察雅县| 姜堰市| 万州区| 万山特区| 泗洪县| 滨州市| 新营市|