- TEL:131 7970 3111
-
慧網(wǎng)微信
- 掃描二維碼
- 關(guān)注邳州在線
-
手機(jī)網(wǎng)站
- 手機(jī)掃描二維碼
- 進(jìn)入手機(jī)站
網(wǎng)站地圖
付款方式
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="<><><>";