精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

學(xué)習(xí)筆記 Perl grep函數(shù)使用揭秘

開發(fā) 架構(gòu)
本文介紹一下Perl grep函數(shù)的概念,它會(huì)根據(jù)LIST中的元素對(duì)BLOCK或EXPR做出評(píng)估,而且會(huì)把局部變量$_設(shè)置為當(dāng)前所用的LIST中的元素。

本文和大家重點(diǎn)討論一下Perl grep函數(shù)的使用,Perl grep函數(shù)會(huì)根據(jù)LIST中的元素對(duì)BLOCK或EXPR做出評(píng)估,BLOCK塊是一個(gè)或多個(gè)由花括號(hào)分隔開的Perl語句。而List則是一串被排序的值。

Perl grep函數(shù)的使用

關(guān)于Perl grep函數(shù)

(如果你是個(gè)Perl的新手,你可以先跳過下面的兩段,直接到Grepvs.loops樣例這一部分,放心,在后面你還會(huì)遇到它)

grepBLOCKLIST
grepEXPR,LIST

Perl grep函數(shù)會(huì)根據(jù)LIST中的元素對(duì)BLOCK或EXPR做出評(píng)估,而且會(huì)把局部變量$_設(shè)置為當(dāng)前所用的LIST中的元素。BLOCK塊是一個(gè)或多個(gè)由花括號(hào)分隔開的Perl語句。而List則是一串被排序的值。EXPR是一個(gè)或多個(gè)變量,操作符,字符,函數(shù),子程序調(diào)用的綜合體。Grep會(huì)返回一組經(jīng)BLOCK或EXPR塊的估值后是真的元素。如果BLOCK塊由多個(gè)語句組成,那么Grep以BLOCK中的最后一條語句的估計(jì)值為準(zhǔn)。LIST可以是一個(gè)列表也可以是一個(gè)數(shù)組。在標(biāo)量上下文中,grep返回的是可以被BLOCK或EXPR估為真的元素個(gè)數(shù)。

請(qǐng)避免在BLOCK或EXPR塊中修改$_,因?yàn)檫@會(huì)相應(yīng)的修改LIST中的元素。同時(shí)還要避免把grep返回的列表做為左值使用,因?yàn)檫@也會(huì)修改LIST中的元素。(所謂左值變量就是一個(gè)在賦值表達(dá)式左邊的變量)。一些Perlhackers可能會(huì)利用這個(gè)所謂的"特性",但是我建議你不要使用這種混亂的編程風(fēng)格.

Perl grep函數(shù)與循環(huán)

這個(gè)例子打印出myfile這個(gè)文件中含有terriosm和nuclear的行(大小寫不敏感).

  1. openFILE"<myfile"ordie"Can'topenmyfile:$!";  
  2. printgrep/terrorism|nuclear/i,<FILE>


對(duì)于文件很大的情況,這段代碼耗費(fèi)很多內(nèi)存。因?yàn)間rep把它的第二個(gè)參數(shù)作為一個(gè)列表上下文看待,所以<>操作符返回的是整個(gè)的文件。更有效的代碼應(yīng)該這樣寫:

 

  1. while($line=<FILE>){  
  2. if($line=~/terrorism|nuclear/i){print$line}  

通過上面可以看到,使用循環(huán)可以完成所有g(shù)rep可以完成的工作。那為什么我們還要使用grep呢?一個(gè)直觀的答案是grep的風(fēng)格更像Perl,而loops(循環(huán))則是C的風(fēng)格。一個(gè)更好的答案是,首先,grep很直觀的告訴讀者正在進(jìn)行的操作是從一串值中選出想要的。其次,grep比循環(huán)簡(jiǎn)潔。(用軟件工程的說法就是grep比循環(huán)更具有內(nèi)聚力)。基本上,如果你對(duì)Perl不是很熟悉,隨便你使用循環(huán)。否則,你應(yīng)該多使用像grep這樣的強(qiáng)大工具.

計(jì)算數(shù)組中匹配給定模式的元素個(gè)數(shù)
在一個(gè)標(biāo)量上下文中,grep返回的是匹配的元素個(gè)數(shù).

$num_apple=grep/^apple$/i,@fruits;^和$匹配符的聯(lián)合使用指定了只匹配那些以apple開頭且同時(shí)以apple結(jié)尾的元素。這里grep匹配apple但是pineapple就不匹配。

輸出列表中的不同元素

 

  1. @unique=grep{++$count{$_}<2}  
  2. qw(abacddefgfhh);  
  3. print"@unique\n"; 

輸出結(jié)果:abcdefgh$count{$_}是Perl散列中的一個(gè)元素,是一個(gè)鍵值對(duì)(Perl中的散列和計(jì)算機(jī)科學(xué)中的哈希表有關(guān)系,但不完全相同)這里count散列的鍵就是輸入列表中的各個(gè)值,而各鍵對(duì)應(yīng)的值就是該鍵是否使BLOCK估值為真的次數(shù)。當(dāng)一個(gè)值第一次出現(xiàn)的時(shí)候BLOCK的值被估為真(因?yàn)樾∮?),當(dāng)該值再次出現(xiàn)的時(shí)候就會(huì)被估計(jì)為假(因?yàn)榈扔诨虼笥?)。

取出列表中出現(xiàn)兩次的值

  1. @crops=qw(wheatcornbarleyricecornsoybeanhay  
  2. alfalfaricehaybeetscornhay);  
  3. @duplicates=grep{$count{$_}==2}  
  4. grep{++$count{$_}>1}@crops;  
  5. print"@duplicates\n"; 

在grep的第一個(gè)列表元素被傳給BLOCK或EXPR塊前,第二個(gè)參數(shù)被當(dāng)作列表上下文看待。這意味著,第二個(gè)grep將在左邊的grep開始對(duì)BLOCK進(jìn)行估值之前完全讀入count散列。

列出當(dāng)前目錄中的文本文件

@files=grep{-fand-T}glob'*.*';
print"@files\n";
glob函數(shù)是獨(dú)立于操作系統(tǒng)的,它像Unix的shell一樣對(duì)文件的擴(kuò)展名進(jìn)行估計(jì)。單個(gè)的*表示匹配所以當(dāng)前目錄下不以.開頭的文件,.*表示匹配當(dāng)前目錄下以.開頭的所有文件.如果一個(gè)文件是文本文件-f和-T文件測(cè)試符則返回真。使用-fand-T進(jìn)行測(cè)試要比單用-T進(jìn)行測(cè)試有效,因?yàn)槿绻粋€(gè)文件沒有通過-f測(cè)試,那么-T測(cè)試就不會(huì)進(jìn)行,而-f測(cè)試比-T耗時(shí)更少.

從數(shù)組中選出元素并消除重復(fù)

 

  1. @array=qw(Tobeornottobethatisthequestion);  
  2. print"@array\n";  
  3. @found_words=  
  4. grep{$_=~/b|o/iand++$counts{$_}<2;}@array;  
  5. print"@found_words\n"; 

輸出結(jié)果:
Tobeornottobethatisthequestion
Tobeornottoquestio
邏輯表達(dá)式$_=~/b|o/i匹配包含有b或o的元素(區(qū)別大小寫)。把匹配操作放在計(jì)數(shù)工作前要比把計(jì)數(shù)工作放在前面有效些。比如,如果左邊的表達(dá)式測(cè)試失敗,那么右邊的表達(dá)式就不會(huì)被計(jì)算.

選出二維坐標(biāo)數(shù)組中橫坐標(biāo)大于縱坐標(biāo)的元素

 

  1. #Anarrayofreferencestoanonymousarrays  
  2. @data_points=([5,12],[20,-3],  
  3. [2,2],[13,20]);  
  4. @y_gt_x=grep{$_->[0]<$_->[1]}@data_points;  
  5. foreach$xy(@y_gt_x){print"$xy->[0],$xy->[1]\n"} 

輸出結(jié)果:
5,12
13,20

在數(shù)據(jù)庫(kù)中查找餐館

這個(gè)例子實(shí)現(xiàn)數(shù)據(jù)庫(kù)的方法不適合在實(shí)際中使用的,但是它說明了使用Perl grep函數(shù)的時(shí)候,只要你的內(nèi)存夠用,BLOCK塊的復(fù)雜度基本沒有限制.

 

  1. #@databaseisarrayofreferencestoanonymoushashes  
  2. @database=(  
  3. {name=>"WildGinger",  
  4. city=>"Seattle",  
  5. cuisine=>"AsianThaiChineseKoreanJapanese",  
  6. expense=>4,  
  7. music=>"\0",  
  8. meals=>"lunchdinner",  
  9. view=>"\0",  
  10. smoking=>"\0",  
  11. parking=>"validated",  
  12. rating=>4,  
  13. payment=>"MCVISAAMEX",  
  14. },  
  15. #{...},etc.  
  16. );  
  17.  
  18. subfindRestaurants{  
  19. my($database,$query)=@_;  
  20. returngrep{  
  21. $query->{city}?  
  22. lc($query->{city})eqlc($_->{city}):1  
  23. and$query->{cuisine}?  
  24. $_->{cuisine}=~/$query->{cuisine}/i:1  
  25. and$query->{min_expense}?  
  26. $_->{expense}>=$query->{min_expense}:1  
  27. and$query->{max_expense}?  
  28. $_->{expense}<=$query->{max_expense}:1  
  29. and$query->{music}?$_->{music}:1  
  30. and$query->{music_type}?  
  31. $_->{music}=~/$query->{music_type}/i:1  
  32. and$query->{meals}?  
  33. $_->{meals}=~/$query->{meals}/i:1  
  34. and$query->{view}?$_->{view}:1  
  35. and$query->{smoking}?$_->{smoking}:1  
  36. and$query->{parking}?$_->{parking}:1  
  37. and$query->{min_rating}?  
  38. $_->{rating}>=$query->{min_rating}:1  
  39. and$query->{max_rating}?  
  40. $_->{rating}<=$query->{max_rating}:1  
  41. and$query->{payment}?  
  42. $_->{payment}=~/$query->{payment}/i:1  
  43. }@$database;  
  44. }  
  45.  
  46. %query=(city=>'Seattle',cuisine=>'Asian|Thai');  
  47. @restaurants=findRestaurants(\@database,\%query);  
  48. print"$restaurants[0]->{name}\n";  
  49.  

 

輸出結(jié)果:WildGinger

【編輯推薦】

  1. Eclipse平臺(tái)中Perl腳本開發(fā)
  2. Perl學(xué)習(xí)筆記----Perl命令行
  3. Perl數(shù)組和引用使用指導(dǎo)
  4. Perl基礎(chǔ) 解析Perl標(biāo)量和數(shù)組概念
  5. Perl模式匹配中的特殊字符用法指南


 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-07-21 14:18:27

Perl函數(shù)

2010-07-23 13:53:33

Perl grep函數(shù)

2010-07-19 15:31:10

Perl關(guān)聯(lián)數(shù)組函數(shù)

2010-07-26 10:09:01

Perl split函

2010-07-21 13:27:06

Perl模式匹配

2010-07-21 14:08:28

Perl命令行

2010-07-13 12:50:47

Perl變量

2010-07-15 10:07:29

Perl指令

2010-07-13 15:43:57

Perl語言

2010-07-19 09:08:38

Perl模塊

2010-07-13 13:15:17

Perl

2010-07-15 18:04:20

Perl模式

2010-07-20 15:18:41

Perl基本語法

2010-07-26 10:51:26

Perl模式匹配

2010-07-16 17:38:12

Perl包

2010-07-16 12:50:45

Perl語言

2010-07-15 14:54:50

Perl線程

2010-07-15 11:29:25

Perl格式化輸出

2010-07-19 16:47:54

Perl

2010-07-14 17:11:57

Perl文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

av岛国在线| 91精品视频在线播放| 欧美日韩高清免费| 亚洲天堂黄色片| 国产小视频福利在线| 亚洲午夜一级| 一区二区三区在线视频观看58 | 男人的天堂成人在线| 欧美一区二区三区喷汁尤物| 一区在线电影| 亚洲天堂中文字幕在线| 精品一区二区三区中文字幕老牛| 五月婷婷激情综合网| aa成人免费视频| 免费毛片在线播放免费| 日本在线视频一区二区三区| ...xxx性欧美| 91成人免费在线观看| 91香蕉一区二区三区在线观看| se69色成人网wwwsex| 国产亚洲欧美日韩日本| 日本免费久久高清视频| 美女久久久久久久久久| 手机av在线| 国产精品一区在线| 欧美国产日产韩国视频| 亚洲美女高潮久久久| 国产蜜臀在线| jizz一区二区| 欧洲成人免费aa| 公肉吊粗大爽色翁浪妇视频| 国产福利亚洲| 亚洲日本一区二区| 不卡一区二区三区四区五区| 亚洲一级特黄毛片| 日韩精品电影一区亚洲| 日韩一中文字幕| 激情成人在线观看| 理论不卡电影大全神| 亚洲资源在线观看| 麻豆精品传媒视频| 在线观看免费视频一区| 久久精品伊人| 国产91在线高潮白浆在线观看| 国产成年人免费视频| 亚洲综合小说图片| 欧美喷水一区二区| 极品粉嫩国产18尤物| 国产色a在线| 久久影院午夜片一区| 成人h视频在线观看播放| 国产网友自拍视频| 欧美日韩国产免费观看视频| 亚洲天堂久久av| 91欧美一区二区三区| h片在线观看| 亚洲国产精品久久不卡毛片| 天天综合色天天综合色hd| 国产一区二区在线播放视频| 激情自拍一区| 色诱女教师一区二区三区| 污网站免费观看| 好吊妞视频这里有精品| 一本久久综合亚洲鲁鲁五月天| 中文字幕欧美人与畜| 日本在线免费网| 91麻豆福利精品推荐| 亚洲tv在线观看| 亚洲av无码不卡| 伊人久久大香线蕉av超碰演员| 久久99亚洲热视| 少妇视频在线播放| 色天天色综合| 日韩欧美国产系列| 奇米影视四色在线| 一区二区乱码| 欧美午夜宅男影院| 久久精品视频16| 最新超碰在线| 国产精品国产馆在线真实露脸 | 浓精h攵女乱爱av| 日本在线观看高清完整版| 亚洲国产精品二十页| 精品国产免费久久久久久尖叫| 国产精品久久久久久久免费| 日韩电影在线看| 国产综合香蕉五月婷在线| 青青青国产在线 | 国产三级精品在线| 欧洲xxxxx| av色图一区| 久久人人超碰精品| 中文字幕精品一区日韩| 电影在线观看一区| 亚洲高清视频在线| 黄色免费网址大全| 国产综合av| 欧美性jizz18性欧美| 欧美亚洲日本一区二区三区| 日韩欧美精品电影| 日韩精品一区二区三区中文不卡| 国产精品无码一区二区三区免费| 国产欧美三级电影| 中文字幕亚洲综合久久筱田步美| 欧洲av一区二区三区| 亚洲精品aaaaa| 欧美成人免费在线视频| 69av视频在线| 综合亚洲视频| 欧美日韩ab片| 中国女人真人一级毛片| 蜜臀久久99精品久久久久宅男 | 超碰成人免费在线| 色噜噜成人av在线| 777欧美精品| 激情文学亚洲色图| 九九99久久精品在免费线bt| 69堂成人精品免费视频| 中国毛片在线观看| 伊人成人在线视频| 亚洲xxxx18| 五月婷婷在线观看| 在线观看亚洲成人| 国产高清999| 久久免费精品视频在这里| 久久精品国产欧美激情| 清纯粉嫩极品夜夜嗨av| 美女www一区二区| 亚洲a中文字幕| 成年人在线观看| 亚洲精品免费电影| 五月天视频在线观看| 日韩午夜电影网| 欧美激情一级二级| 99超碰在线观看| 久久精品国产秦先生| 日本精品国语自产拍在线观看| 午夜视频在线| 欧美伊人久久久久久午夜久久久久| 欧美熟妇精品黑人巨大一二三区| 亚洲国产日韩欧美一区二区三区| 青青久久av北条麻妃海外网| 色哟哟中文字幕| 国产欧美日韩精品一区| 日本精品免费视频| 国产精品日本一区二区三区在线 | 91入口在线观看| 高清免费电影在线观看| 亚洲国产日日夜夜| 亚洲v在线观看| 亚洲天堂激情| 精品视频一区二区三区四区| av漫画网站在线观看| 亚洲第一免费网站| 国产午夜精品久久久久久久久| 黄色综合网站| 国产一区二区视频在线免费观看| 国产高清视频在线播放| 91高清视频免费看| 成年人看片网站| 成人在线一区| 91超碰中文字幕久久精品| 国产精品国产三级国产普通话对白 | 母乳一区在线观看| 日本一区二区三区在线视频| av成人在线看| 久久精品国产综合| 亚洲成熟女性毛茸茸| 国产蜜臀97一区二区三区| 亚洲xxxx2d动漫1| 欧美成人日韩| 国产精品视频xxxx| 四虎精品成人影院观看地址| 亚洲欧美电影院| 91日韩视频在线观看| 日韩在线观看| 成人免费视频网站入口| 丁香婷婷在线观看| 777a∨成人精品桃花网| 日韩欧美三级在线观看| 国产福利一区二区三区视频在线| 日韩性感在线| 欧美xxxxxx| 亚洲欧美成人网| 国产精品午夜影院| 成人亚洲一区二区一| 久久www视频| 久久精品免视看国产成人| 欧美精品电影免费在线观看| 久久电影中文字幕| 欧美午夜激情视频| 天天操天天摸天天舔| 蜜臀av性久久久久蜜臀aⅴ | 好吊妞www.84com只有这里才有精品 | 国产精品va在线播放| 亚洲日本香蕉视频| 性久久久久久久久久久久| 天天操天天干天天操天天干| 国产91综合网| 日本熟妇人妻xxxx| 8848成人影院| 久久久亚洲影院你懂的| 蜜桃av中文字幕| 亚洲午夜久久久久久久久久久| 中文字幕一二三| 午夜日韩av| 日韩中文字幕一区二区| 激情小说一区| 99久久精品免费看国产一区二区三区| 成人自拍av| 2019国产精品自在线拍国产不卡| 精品国产免费无码久久久| 亚洲精品免费电影| 天天干天天舔天天操| 99麻豆久久久国产精品免费优播| 国产精品久久久久久久99| 日韩和欧美的一区| 精品国产免费av| 国内精品久久久久久99蜜桃| 国产精品永久免费| 菠萝菠萝蜜在线视频免费观看| 亚洲色图美腿丝袜| 五月婷婷深深爱| 欧美精品一区二区蜜臀亚洲| 日本高清www免费视频| 亚洲欧美日韩国产中文在线| 美女网站视频色| 亚洲国产成人私人影院tom| 一卡二卡三卡四卡| 麻豆精品视频在线观看视频| 97在线免费公开视频| 日韩免费视频| 日本在线成人一区二区| 要久久爱电视剧全集完整观看| 国产精品嫩草在线观看| 日本精品不卡| 欧美专区第一页| 欧亚av在线| 91chinesevideo永久地址| 国产一二三在线| 97在线观看视频| 老司机精品影院| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲资源av| 亚洲欧美国产不卡| 国产图片一区| 精品视频在线观看| 最新国产一区| 91传媒在线免费观看| 久久精品九色| 国产免费高清一区| 日韩母乳在线| 日韩不卡av| 国产精品久久久久久久久妇女| 国产精品一级久久久| 99久久婷婷国产综合精品青牛牛| 日本一区二区在线播放| 奇米777日韩| 国产精品久久久久久久久久久久| 日韩毛片免费看| 亚洲一区二区三区在线免费观看| 亚洲不卡在线| 国产一区二区久久久| 亚洲另类春色校园小说| 少妇免费毛片久久久久久久久| 久久国产成人精品| 美女在线免费视频| 国产欧美日本| 日韩免费在线观看av| 三上亚洲一区二区| 在线观看免费黄色片| 欧美三级乱码| 中文字幕一区二区三区在线乱码| 婷婷久久一区| 国产美女在线一区| 日韩不卡一区二区| 波多野结衣三级视频| 久久先锋影音av鲁色资源| 久久久久久成人网| 亚洲综合一二区| 黄色片视频免费| 黄色一区二区在线| 国产在线拍揄自揄拍无码视频| 午夜精品久久久| 做爰无遮挡三级| 在线日韩av片| 国产av一区二区三区精品| 6080午夜不卡| 天堂v在线观看| 色婷婷av一区二区三区在线观看 | 欧美高清视频在线观看mv| 日韩精品一区二区在线视频| 久久久久综合| 黄色片免费网址| 91毛片在线观看| 国产精品久久久精品四季影院| 精品久久中文字幕久久av| 亚洲图片中文字幕| 日韩精品福利网站| 性xxxx搡xxxxx搡欧美| xxxxxxxxx欧美| 婷婷六月国产精品久久不卡| 亚洲xxxx视频| 欧美限制电影| 黄色一级片播放| 久久福利毛片| 91亚洲一线产区二线产区| 中文字幕av一区二区三区高| 国产精品第一页在线观看| 欧美精品99久久久**| 国产v在线观看| 亚洲一区二区久久久| 91在线导航| 国产91成人video| 视频精品一区二区三区| 一区二区日本伦理| 亚洲精品久久久| 少妇久久久久久被弄到高潮| 男女视频一区二区| 亚洲欧洲久久久| 精品日韩视频在线观看| 久久久黄色大片| 亚洲成人a**站| 欧美xxxx性xxxxx高清| 欧美中在线观看| 欧美三级电影在线| 午夜精品视频在线观看一区二区| 亚洲毛片在线| 69亚洲乱人伦| 国产午夜精品久久久久久久 | 精品91在线| 欧美日韩一区二区区别是什么 | 99久久免费视频.com| 久久久精品国产sm调教| 五月婷婷欧美视频| 日韩一级片免费| 97精品视频在线播放| 国产厕拍一区| 久久久久久www| 99精品视频在线播放观看| 性猛交娇小69hd| 91久久精品一区二区二区| 美女毛片在线看| 久久天天躁狠狠躁夜夜躁2014| 成年女人在线看片| 精品乱码一区| 欧美专区18| 欧美精品日韩在线| 欧美性高清videossexo| av资源在线观看免费高清| 国产欧亚日韩视频| 欧美一区不卡| 人妻av一区二区三区| 亚洲国产精品视频| 欧美777四色影视在线| 日产日韩在线亚洲欧美| 成人羞羞网站| 中文字幕亚洲影院| 一区二区国产视频| 五月婷婷六月色| 国产精品视频播放| 午夜精品毛片| 成人在线电影网站| 色综合一个色综合亚洲| 永久免费av在线| 99re6热在线精品视频播放速度| 国产一区久久| 中文字幕人妻一区二区| 欧美午夜宅男影院| 少女频道在线观看免费播放电视剧| 国产精品视频入口| 日韩精品每日更新| 一区二区成人免费视频| 亚洲精品97久久| 色猫猫成人app| 国产天堂视频在线观看| 久久综合久久综合亚洲| 中文字字幕在线观看| 色综合久久中文字幕综合网小说| 国产欧美三级电影| www.这里只有精品| 亚洲va欧美va天堂v国产综合| 国产青青草在线| 51国产成人精品午夜福中文下载 | 日韩免费不卡av| 欧美一区国产在线| 午夜精产品一区二区在线观看的| 777久久久精品| 亚洲欧洲美洲av| 在线视频欧美一区| 91丨porny丨国产入口| 97人妻人人澡人人爽人人精品 | 亚洲精品三区| 亚洲春色综合另类校园电影| 懂色av噜噜一区二区三区av| 中文在线观看免费高清| 欧美亚洲另类制服自拍| 久久精品免费一区二区三区| 男女黄床上色视频| 欧美精品一区二区三区蜜桃视频|