国产毛片午夜福利,国产黄网,国产亚洲天堂,97国产精品

  •  
    Perl語言的文字處理模式之三
    發(fā)布時(shí)間:2008-04-24   瀏覽次數(shù):1184620

    Perl語言的文字處理模式之三

    在perl程序?qū)懽髦谐玫?~和!~這兩個(gè)運(yùn)算符及s和tr這二個(gè)函數(shù)來和文字處理模式/pattern/搭配而成一個(gè)運(yùn)算式,如果能夠活用這些指令的話,可以很輕易地來處理一些字符串,當(dāng)然在CGI程序設(shè)計(jì)中也更能得心應(yīng)手了,F(xiàn)在讓作者來介紹這些運(yùn)算符及函數(shù)的用法:

      --------------------------------------------------------------------------

    指令: /pattern/文字運(yùn)算
    說明:如果在文字運(yùn)算中沒有使用=~或是!~運(yùn)算符指定一個(gè)字符串來做運(yùn)算的話, 會
    使用內(nèi)定的輸出變量$_來做/pattern/文字運(yùn)算。

    范例一:
      $string="chmod7llcgi";
      $string=~/(w+)s+(d+)/;
      個(gè)(w+)是代表找尋數(shù)個(gè)字母,并將所找到的字符串指派給$l這個(gè)變量,而s+代
    表 找尋多個(gè)空白的字符串,(d+)代表找尋數(shù)個(gè)數(shù)值,并將所找到的字符串指派給
    $2這 個(gè)變量。所以$l="chmod",$2=71l,但是$string還是等于原來的字符串,沒有改變。

    范例二:
      $_="chmod71lcgi";
      /(w+)s+(d+)/;
      因?yàn)槭前炎址付ńo$_這個(gè)變量,所以可以不用=~這個(gè)運(yùn)算符會得到
    $l="chmod", $2=711;而且$_還是等于原來的字符串,沒有改變。

    范例三:
      $string="chmod71lcgi";
      @list=split(/s+/,$string);
      以一個(gè)或是多個(gè)空白字符來分割$string這個(gè)字符串,這是一個(gè)很常用的語法。此時(shí)
      @list=("chmod","7ll","cgi");
    指令: =~相配運(yùn)算符
    說明:這是Perl語言中特有的語法,通常會和文字處理模式來作運(yùn)算。

    范例:
      print"請輸入一個(gè)字符串!n";
      $string=<>; #<>代表標(biāo)準(zhǔn)輸入,會讓使用者輸入一字符串
      chop($string);  #將$string一個(gè)換行的字符n刪除掉
      if($string=~/cgi/){  
       print"輸入的字符串中有cgi這個(gè)字符串!n";
      }
      如果輸入的字符串中含有cgi這個(gè)字符串的話,會顯示出這個(gè)信息。
      --------------------------------------------------------------------------

    指令:!~不相配運(yùn)算符
    說明:這也是Perl語言中特有的語法,通常會和文字處理模式來作運(yùn)算。

    范例:
      print"請輸入一個(gè)字符串!n";
      $string=<>; #<>代表標(biāo)準(zhǔn)輸入,會讓使用者輸入一字符串
      chop($string);  #將$stdng一個(gè)換行的字符n刪除掉
      if($string!~/cgi/){
        print"輸入的字符串中沒有cgi這個(gè)字符串!n";
      }
      如果輸入的字符串中沒有含有cgi這個(gè)字符串的話,會顯示出這個(gè)信息。
      --------------------------------------------------------------------------

    指令:tr轉(zhuǎn)換函數(shù)
    語法:tr/SEARCHLIST/REPLACELIST/
      其中SEARCHLIST是要轉(zhuǎn)換的字符,REPLACELIST是轉(zhuǎn)換成何種字符。
    說明:tr(translate)是轉(zhuǎn)換的意思,會把符合轉(zhuǎn)換的字符轉(zhuǎn)換成要轉(zhuǎn)換的字符。

    范例一:
      $string="test1ng";
      $string=~tr/et/ET/;#此時(shí)$string="TEsTing";
      $string=~tr/a-z/A-Z/;#此時(shí)$string="TESTING";

    范例二:
      $string="CGI+Perl";
      $string=~tr/+//;#此時(shí)$string="CGI Perl";
      在傳送CGI數(shù)據(jù)的時(shí)候會先將數(shù)據(jù)編碼,其中會將空白的字符轉(zhuǎn)成+這個(gè)字符,所以 在
    解碼的時(shí)候要把+這個(gè)字符還原成空白的字符。

    指令:s取代函數(shù)
    語法:s/PATTERN/REPLACE/eg

      其中PATTERN是文字處理(Regular Expression)的模式,REPLACE是代表取代成何種文
    字 模式。而g是這個(gè)函數(shù)最常用的參數(shù),代表要把所有符合文字模式的字符串 全部取
    代,如果省略這個(gè)參數(shù)的話,則只取代一個(gè)符合文字模式的字符串;而加上e這 個(gè)參數(shù)是代
    表要將REPLACE的部分當(dāng)成一個(gè)運(yùn)算式,如果沒有這個(gè)需要的話,不用加 上這個(gè)參數(shù)。
    說明:將符合文字處理模式的字符串取代成為要取代的字符串。

    范例一:
      $string="i;love;perl";
      $string=~s/:/*/:   #此時(shí)$string="i*love:perl";
      $string=~s/:/*/g;   #此時(shí)$string="i*love*perl";
      $stiing=~s/*/+/g;   #此時(shí)$string="i+love+perl";
      $string=~s/+//g:   #此時(shí)$string="i love perl";
      上一行也可寫成$string=~tr/+//;效果都會一樣哦!
      $string=~s/per1/cgi/; #此時(shí)$string="i love cgi";

    范例二:
      $string="i love per";
      $string=~s/(love)/<$1>/;
      個(gè)()內(nèi)所找到的字符串變成$1,在這個(gè)范例中,會把變量love這個(gè)字符串變成
    <>,此時(shí)$string="i<>perl";
      $string="i love per1";
      $string=~s/(i)(perl)/<$1><$2>/;
      在這個(gè)范例中,會把i變成<>,perl變成<>此時(shí)$string="<>love<>";
      $striag="i love per1";
      $string=~s/(w+)/<$1>/g;

      (w+)代表找尋符合一個(gè)或是多個(gè)英文字符或是數(shù)值的字符串,之后再將找到的字 符串設(shè)成$l。因?yàn)榧由蟝這個(gè)參數(shù),所以會找到字符串中的這三個(gè)英文單字, 然后 再把這三個(gè)單字分別加上<>這個(gè)符號,此時(shí)$string="<><><>";

    立即預(yù)約