明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

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

[摘要]范例三:   $string="ww22cgi44";   $string=~s/(d+)/$1*2/e;   (d+)代表要找尋$string中一個(gè)或是多個(gè)數(shù)值的字符串,再將找到的字符串設(shè)成 $1。加上參數(shù)e是代表要把$l*2當(dāng)作是一個(gè)運(yùn)算式,所以$string="...
范例三:
  $string="ww22cgi44";
  $string=~s/(d+)/$1*2/e;
  (d+)代表要找尋$string中一個(gè)或是多個(gè)數(shù)值的字符串,再將找到的字符串設(shè)成
$1。加上參數(shù)e是代表要把$l*2當(dāng)作是一個(gè)運(yùn)算式,所以$string="www44cgi44";
  $string="www22cgi44";
  $string=~s/(d+)/$1*2/eg;
  加上參數(shù)e,所以會(huì)把$1*2當(dāng)作是一個(gè)運(yùn)算式來看, 加上參數(shù)g就會(huì)把全部符合數(shù) 值
的字符串經(jīng)過運(yùn)算式運(yùn)算之后再把它取代,所以$string="www44cgi88";

范例四:
  假設(shè)原本的字符串是$value="三八!",經(jīng)CGI數(shù)據(jù)編碼之后,這個(gè)字符串就會(huì)變成
$value="%A4T%A4K%21"。以下是一個(gè)解碼的示范程序:
  $value="%A4T%A4K%2l";
  $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($l))/eg;

  在傳送CGI數(shù)據(jù)的時(shí)候會(huì)把數(shù)據(jù)編碼,其中會(huì)將特殊字符或是中文字符編碼成以% 開頭的連續(xù)兩個(gè)十六進(jìn)制數(shù)的字符串,所以要用s這個(gè)函數(shù)來找尋這個(gè)以%開頭的 字符串。為了要把找到的字符串再做解碼的處理, 所以要在%這個(gè)符號(hào)之后加上 ()這個(gè)符號(hào), 表示會(huì)把找到的字符串記憶起來并指定給$1這個(gè)變量,而且要在() 中加上代表是連續(xù)兩個(gè)十六進(jìn)制數(shù)值的文字處理模式(Regular Expression),也 就是[a-fA-F0-9][a-fA-F0-9]。再用hex這個(gè)函數(shù)($1是代表符合的字符串)把十 六進(jìn)制數(shù)值轉(zhuǎn)成十進(jìn)制的碼,之后再用pack這個(gè)函數(shù)(以C為參數(shù),是代表 unsigned char value的意思)把這個(gè)十進(jìn)制碼還原成原來的字符串。最后就會(huì) 把這個(gè)字符串解碼成$value="三八!"。值得一提的是也可以把這個(gè)解碼的程序 寫成:

  $value=~s/%(..)/pack("C",hex($l))/eg;