av网站免费线看精品_国产做a爱视频免费不_深爱激情网开心五月天_伊人五月天在线视频网

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

Perl語(yǔ)言的文字處理模式之三

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

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

指令: /pattern/文字運(yùn)算
說(shuō)明:如果在文字運(yùn)算中沒(méi)有使用=~或是!~運(yùn)算符指定一個(gè)字符串來(lái)做運(yùn)算的話, 會(huì)
使用內(nèi)定的輸出變量$_來(lá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還是等于原來(lái)的字符串,沒(méi)有改變。

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

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

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

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

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

指令:tr轉(zhuǎn)換函數(shù)
語(yǔ)法:tr/SEARCHLIST/REPLACELIST/
  其中SEARCHLIST是要轉(zhuǎn)換的字符,REPLACELIST是轉(zhuǎn)換成何種字符。
說(shuō)明:tr(translate)是轉(zhuǎn)換的意思,會(huì)把符合轉(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í)候會(huì)先將數(shù)據(jù)編碼,其中會(huì)將空白的字符轉(zhuǎn)成+這個(gè)字符,所以 在
解碼的時(shí)候要把+這個(gè)字符還原成空白的字符。

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

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

范例一:
  $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";
  上一行也可寫(xiě)成$string=~tr/+//;效果都會(huì)一樣哦!
  $string=~s/per1/cgi/; #此時(shí)$string="i love cgi";

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

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

立即預(yù)約