国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Perl > 正文

Perl語言編程特殊技巧

2024-09-08 23:41:18
字體:
供稿:網(wǎng)友

perl語言因其能夠用較少的空間表達(dá)復(fù)雜的命令而出名,本文將探討perl語言是如何實(shí)現(xiàn)這些功能。

我們將從一個(gè)最簡單的小程序開始,它的功能是從鍵盤輸入字符,然后將其送到控制臺(tái)。采用perl語言實(shí)現(xiàn),你可以會(huì)這樣寫:

while ($line = <stdin>) {

print $line;

}

一開始這一程序已十分簡潔,但是它的每條語句是什么意思呢?簡單地說,<stdin>是一個(gè)專用的文件句柄,在本例中它屬于標(biāo)準(zhǔn)輸入緩存(稱為stdin),通常是連接到鍵盤。每次我們將<stdin>的值賦給變量$line時(shí),即為將stdin緩存中的首行取出,然后放入$line。當(dāng)?shù)竭_(dá)緩存最后一行時(shí),就會(huì)取出while語句判斷條件為假的(eof)文件結(jié)束標(biāo)識(shí)符。程序的其它部分很簡單可以這樣解釋。現(xiàn)在我們已經(jīng)將輸入信息放入$line變量,接著我們就可以用print函數(shù)將其打印到屏幕。或者更準(zhǔn)確地說,打印到通常連接顯示器的標(biāo)準(zhǔn)輸入緩存。標(biāo)準(zhǔn)輸入和輸出緩存都可以重定向,例如可重定向到保存程序結(jié)果的某個(gè)文件中,如果是在處理文本,那么通常可以認(rèn)為這與鍵盤及顯示器是等價(jià)的。

你可能會(huì)認(rèn)為這一程序已經(jīng)是最短的了,但是通過使用perl的特殊變量,它還可以更短。

默認(rèn)數(shù)據(jù)變量:$_

perl有很多特殊變量,它們?cè)诔绦蜻\(yùn)行過程中被自動(dòng)分配,可用于訪問程序本身的一些信息,諸如程序名或者進(jìn)程id號(hào)、命令行參數(shù)、或最后一個(gè)表達(dá)式的運(yùn)算結(jié)果。這些變量中最經(jīng)常使用也可能是最有用的是$_這一默認(rèn)變量。如果你在程序中未指明,默認(rèn)變量作為某個(gè)未分配的功能變量,用于保存一些perl結(jié)構(gòu)體和函數(shù)的運(yùn)算結(jié)果。在你熟悉perl之前這可能聽起來令人費(fèi)解,但是它的功能的確很強(qiáng)大。我們可以用變量$_來取消程序中的$line變量:

while (<stdin>) {

print $_;

}

這一程序和前一個(gè)是等價(jià)的,即使在測試條件while語句中我們僅使用到一個(gè)文件句柄。程序?qū)⑤斎氪嫒氲侥J(rèn)變量,所以當(dāng)我們要輸出時(shí)就可以用變量$_訪問輸入的信息。但是我們還可以把程序變得更短,記住我說過,$_是一個(gè)用于未定義的實(shí)現(xiàn)某個(gè)功能的默認(rèn)變量,這樣打印是它其中的一個(gè)功能,所以我們現(xiàn)在可以把程序這樣來寫:

while (<stdin>) {

print;

}

現(xiàn)在我們得到實(shí)現(xiàn)同樣功能的程序,但是該程序消除了所有外部變量。因?yàn)槲覀儍H僅是將stdin和stdout連在一起。如果我們能夠去掉while循環(huán)則會(huì)更好,這一循環(huán)無非是在重復(fù)的將數(shù)據(jù)從一個(gè)緩存移到另一個(gè)。這一過程也可以用下面的語句實(shí)現(xiàn):

print <stdin>;

這個(gè)程序的工作過程有點(diǎn)復(fù)雜。當(dāng)采用$_實(shí)現(xiàn)打印時(shí),我們是將一個(gè)變量放在另一個(gè)稱為標(biāo)量變量的情況下。簡單地說就是它將這一變量看作一個(gè)對(duì)象,比如可以是一個(gè)數(shù)或者一個(gè)字符,但并不是一個(gè)集合。打印函數(shù)也可以采用在一組標(biāo)量的方式,即將變量看作一系列對(duì)象,當(dāng)我們使用打印函數(shù)時(shí),它將輪流打印每一個(gè)。當(dāng)我們使用句柄<stdin>進(jìn)行打印時(shí),它將把標(biāo)準(zhǔn)輸入看作一個(gè)字符序列,依次打印。這和while循環(huán)實(shí)現(xiàn)一樣的功能。

這可能是一個(gè)極端的例子,但是使用一些perl編程技巧,可以將我們的程序長度減少一半。

如果我們僅僅想把stdin影射到stnout,這樣做很好。但是如果我們想使我們的程序像unix中的可以打開和打印文件的cat一樣時(shí),應(yīng)該怎么做?我們可能要檢查命令行參數(shù),以確定它們是不是有效文件,然后依次打開和打印它們。但是這么一個(gè)很平常的事情,perl語言可以使用更簡單更短的方法實(shí)現(xiàn)。

特殊的文件句柄:<>

像其它的默認(rèn)變量一樣,perl語言的這一寫為<>的特殊句柄可以使程序編寫更容易。這個(gè)文件句柄將所有命令行參數(shù)都看作文件名,依次打開它們。如果沒有命令行參數(shù),那么就從stdin讀入。像unix中的習(xí)慣用法per一樣,如果將“-”用作命令行參數(shù),它將會(huì)打開stdin代替一個(gè)文件。因此如果我們想編寫一個(gè)像上面提到的可以支持命令行中的文件的程序,這很簡單,可以這樣寫:

print <>;

當(dāng)你考慮到perl可以僅用8條語句寫一個(gè)實(shí)現(xiàn)cat功能的程序時(shí),你就會(huì)明白為什么perl被認(rèn)為功能強(qiáng)大。但是如果我們想在輸入上面實(shí)現(xiàn)一些更重要的功能而不是僅僅將其寫回顯示器上,這該怎樣實(shí)現(xiàn)?

記錄行數(shù)

如果我們想單個(gè)處理每一行輸入,這時(shí)僅將文件句柄連到打印是不夠的。讓我們看一個(gè)在每行輸入上加上行號(hào)的一個(gè)小程序。

$num = 0;

while (<>) {

$num = $num + 1;

print "$numt$_";

}

在這一例子中我們使用$num變量來記錄行號(hào),每輸入一行,我們將其加一,然后將行號(hào)和輸入內(nèi)容一起輸出。當(dāng)我們?cè)谧址惺褂糜呻p引號(hào)括起的變量時(shí),這一變量名將會(huì)用它的內(nèi)容來代替,這使得perl中的格式化輸出變得輕而易舉。

僅這幾個(gè)簡單的程序,我們就可以看出使用特殊變量可讓你編寫更小更快的程序。如果你感興趣,perl所有特殊變量的用法可以在perl手冊(cè)的變量部分得到。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
欧美韩日国产| 国产精品毛片一区二区三区四区| 国产色在线观看| 久久精品免视着国产成人| jizz在线视频| 五月婷婷开心综合| 国产成人精品久久一区二区小说 | 69精品视频| av网站在线播放| 二人午夜免费观看在线视频| 午夜国产在线| 午夜影院免费看| 国产免费麻豆视频| 精品美女调教视频| 久久久久久久久久久久网站 | 国产蜜臀av在线播放| 丁香花高清在线观看完整版 | 老鸭窝av在线| 国产黄色一级电影| 美女网站在线观看| 国产jizz| 国产午夜在线观看| 亚洲欧美日韩成人网| 中文字幕中文字幕在线中高清免费版| 国产大学生粉嫩无套流白浆| 久草国产视频| h视频在线网站| 中文字幕2019第三页| 国产精品自拍在线观看| av在线免费播放网站| 国产精品伦一区二区三区级视频频| 天天草天天草| 国产福利三区| 尤物网站在线| 天天爱天天色| 国产亚洲精品拍拍拍拍拍| 日本h片在线观看| 国产wwww| 99中文字幕一区| 2018中文字幕在线| 一区免费观看| 在线观看wwww| 伊人影院在线视频| 99re在线视频| 69视频在线观看| 国产精品入口麻豆免费观看| 国产免费人人看| 国产原创av在线| 99热在线观看免费| 1区不卡电影| 国产激情三区| aaa大片在线观看| 国产98在线| 在线黄色国产电影| 欧美色欧美亚洲另类二区精品| 欧美黑人乱大交ⅹxxxxx| 免费观看v片在线观看| 国产在线精品一区二区不卡| 久久这里精品| 国产激情二区| 阿v免费在线观看| 国产麻豆视频免费观看| 国产大学生粉嫩无套流白浆| 在线免费观看黄色片| av在线免费播放| 国产野外战在线播放| 国产98在线| jlzzjlzz欧美大全| 最新超碰在线| 一本大道久久精品| 国产美女性感在线观看懂色av| 国产精品入口免费麻豆| 午夜在线网站| 国产日产精品久久久久久婷婷| 亚洲综合在线免费| 最近中文字幕在线中文视频 | www.色五月| 国产精品国精产品一二| 老司机在线视频二区| 五月伊人六月| 男人天堂99| 精品卡一卡卡2卡3网站| 丁香花高清视频完整版在线观看| 国产高清视频在线| 99视频资源网| 免费特级黄毛片| 99久久99热久久精品免费看| 高潮白浆视频| 黄色毛片在线观看| 啪啪免费视频一区| 在线免费国产| 国产福利免费观看| 午夜国产福利在线| 国产中文字幕在线| 99热国产在线| 在线视频xx| 在线观看免费观看在线91| 国产精品合集一区二区 | 最近最好的中文字幕2019免费 | 在线一区二区三区精品| 国产一级电影网| 国产免费自拍视频| 国产尤物一区二区三区| 成人福利视频导航| 高潮毛片在线观看| 天天操人人干| 国产日韩欧美精品一区二区三区| 国产精品自拍在线观看| 丁香综合五月| 国产精品二线| 精品视频二区| 四虎一区二区三区| 欧美成人精品福利网站| 久久精品蜜桃| 99热在线观看免费| 国产激情网址| 在线色视频观看| av在线播放网| 最近中文字幕在线中文视频 | www久久日com| 最新亚洲精品国自产在线观看| 最新中文字幕在线视频| 国产午夜电影| 亚洲国产精品区| 丁香花高清在线观看完整版 | 亚洲精品影视在线| 丁香在线视频| 中文字幕av高清在线观看| www555久久| 国产三级在线看| 在线观看国产视频| 狠狠干五月天| 一区二区精品区| 午夜视频在线看| 亚洲欧美日韩综合精品网| xxxx视频在线| 国产极品美女到高潮| 欧美精品日韩少妇| 中文av在线播放| 国产美女在线播放| eeuss影院www在线播放| 国产日韩精品在线看| 日本高清不卡中文字幕 | aaa大片在线观看| 国产免费av高清在线| 在线免费观看污| 国产精彩视频在线观看免费蜜芽| 免费a级人成a大片在线观看| 国产精品美女视频免费观看软件 | 日p在线观看| 精品电影在线| 国产精品视频一区二区三区麻豆 | 日本视频一二三区中文字幕| 国产精品毛片一区二区三区四区| 九九热视频在线| 欧美性猛交xxxx免费看蜜桃| 影音先锋在线中文字幕| 国产一级片网站| 国产一区二区三区四区尤物| 国产麻豆综合视频在线观看| 成人无遮挡免费网站视频在线观看| 美女被人操视频在线观看| 欧美高清视频| 国产美女福利在线观看| 交视频在线观看国产| 国内精品不卡| 国产小黄视频| 伊人久久青青草| av在线你懂的| 欧美日韩一区二区三区视视频| 青青久在线视频免费观看| 热99在线观看| 麻豆精品视频入口| 久久er视频| 国产香蕉视频在线看| 国产高清在线视频| 樱花草在线观看www| www.操操操.com| 国产美女av| 97视频在线| 超碰在线97国产| 国产素人视频在线观看| 国产福利电影在线观看| 在线观看视频污| 国自产拍在线网站网址视频| 五月亚洲综合| 在线观看国产视频| 免费不卡中文字幕视频| 国产日韩精品在线看| 午夜在线不卡| 国产亚洲依依| 日本免费视频www| 国产精彩视频在线观看免费蜜芽| 亚洲电影先锋| 国产精品美女视频免费观看软件 | 欧美性猛交xxxx免费看久久| 国产网站在线免费观看| 在线观看av网站| 国产系列在线观看| 青青草中文字幕|