亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

Perl語言編程特殊技巧

2024-09-08 23:41:18
字體:
來源:轉載
供稿:網友

perl語言因其能夠用較少的空間表達復雜的命令而出名,本文將探討perl語言是如何實現這些功能。

我們將從一個最簡單的小程序開始,它的功能是從鍵盤輸入字符,然后將其送到控制臺。采用perl語言實現,你可以會這樣寫:

while ($line = <stdin>) {

print $line;

}

一開始這一程序已十分簡潔,但是它的每條語句是什么意思呢?簡單地說,<stdin>是一個專用的文件句柄,在本例中它屬于標準輸入緩存(稱為stdin),通常是連接到鍵盤。每次我們將<stdin>的值賦給變量$line時,即為將stdin緩存中的首行取出,然后放入$line。當到達緩存最后一行時,就會取出while語句判斷條件為假的(eof)文件結束標識符。程序的其它部分很簡單可以這樣解釋?,F在我們已經將輸入信息放入$line變量,接著我們就可以用print函數將其打印到屏幕?;蛘吒鼫蚀_地說,打印到通常連接顯示器的標準輸入緩存。標準輸入和輸出緩存都可以重定向,例如可重定向到保存程序結果的某個文件中,如果是在處理文本,那么通??梢哉J為這與鍵盤及顯示器是等價的。

你可能會認為這一程序已經是最短的了,但是通過使用perl的特殊變量,它還可以更短。

默認數據變量:$_

perl有很多特殊變量,它們在程序運行過程中被自動分配,可用于訪問程序本身的一些信息,諸如程序名或者進程id號、命令行參數、或最后一個表達式的運算結果。這些變量中最經常使用也可能是最有用的是$_這一默認變量。如果你在程序中未指明,默認變量作為某個未分配的功能變量,用于保存一些perl結構體和函數的運算結果。在你熟悉perl之前這可能聽起來令人費解,但是它的功能的確很強大。我們可以用變量$_來取消程序中的$line變量:

while (<stdin>) {

print $_;

}

這一程序和前一個是等價的,即使在測試條件while語句中我們僅使用到一個文件句柄。程序將輸入存入到默認變量,所以當我們要輸出時就可以用變量$_訪問輸入的信息。但是我們還可以把程序變得更短,記住我說過,$_是一個用于未定義的實現某個功能的默認變量,這樣打印是它其中的一個功能,所以我們現在可以把程序這樣來寫:

while (<stdin>) {

print;

}

現在我們得到實現同樣功能的程序,但是該程序消除了所有外部變量。因為我們僅僅是將stdin和stdout連在一起。如果我們能夠去掉while循環則會更好,這一循環無非是在重復的將數據從一個緩存移到另一個。這一過程也可以用下面的語句實現:

print <stdin>;

這個程序的工作過程有點復雜。當采用$_實現打印時,我們是將一個變量放在另一個稱為標量變量的情況下。簡單地說就是它將這一變量看作一個對象,比如可以是一個數或者一個字符,但并不是一個集合。打印函數也可以采用在一組標量的方式,即將變量看作一系列對象,當我們使用打印函數時,它將輪流打印每一個。當我們使用句柄<stdin>進行打印時,它將把標準輸入看作一個字符序列,依次打印。這和while循環實現一樣的功能。

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

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

特殊的文件句柄:<>

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

print <>;

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

記錄行數

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

$num = 0;

while (<>) {

$num = $num + 1;

print "$numt$_";

}

在這一例子中我們使用$num變量來記錄行號,每輸入一行,我們將其加一,然后將行號和輸入內容一起輸出。當我們在字符串中使用由雙引號括起的變量時,這一變量名將會用它的內容來代替,這使得perl中的格式化輸出變得輕而易舉。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩麻豆第一页| 国产精品久久久久7777婷婷| 久久中文精品视频| 国产91精品久| 日韩中文字幕在线视频| 久久久999国产精品| 欧美成人午夜免费视在线看片| 成人精品视频在线| 久久免费福利视频| 热re99久久精品国产66热| 成人免费网站在线观看| 亚洲一区二区久久久久久久| 久久久久久有精品国产| 91亚洲国产成人久久精品网站| 美日韩丰满少妇在线观看| 亚洲精品福利免费在线观看| 欲色天天网综合久久| 午夜欧美不卡精品aaaaa| 欧洲一区二区视频| 国产成一区二区| 在线精品91av| 欧美—级a级欧美特级ar全黄| 久久男人资源视频| 久久久久久高潮国产精品视| 日韩有码视频在线| 精品视频—区二区三区免费| 欧美片一区二区三区| 欧美日产国产成人免费图片| 欧美性xxxxx极品| 亚洲黄色在线看| 欧美成人黑人xx视频免费观看| 97avcom| 一本色道久久88综合日韩精品| 亚洲r级在线观看| 日韩在线高清视频| 国产精品视频区1| 欧美丰满少妇xxxx| 亚洲精品综合精品自拍| 91精品视频免费观看| 日韩美女免费线视频| 成人午夜两性视频| 亚洲国产私拍精品国模在线观看| 8090理伦午夜在线电影| 自拍亚洲一区欧美另类| 国产视频精品va久久久久久| 亚洲欧洲美洲在线综合| 91精品国产综合久久香蕉最新版| 欧美成年人视频| 欧美日韩在线免费观看| www.xxxx欧美| 国产欧美一区二区三区在线看| 欧美在线免费看| 91夜夜未满十八勿入爽爽影院| 国产成人高清激情视频在线观看| 国产美女久久久| 伊人av综合网| 亚洲精品免费一区二区三区| 日韩免费黄色av| 欧美午夜激情小视频| 精品福利视频导航| 91豆花精品一区| 91系列在线观看| 日韩av影片在线观看| 成人国产精品日本在线| 亚洲人成网站777色婷婷| 亚洲成人亚洲激情| 精品国产欧美一区二区五十路| 亚洲欧美一区二区三区久久| 在线a欧美视频| 91av视频在线| 欧美在线一级va免费观看| 国产精品极品在线| 日韩欧美第一页| 久久资源免费视频| 国产精品自产拍在线观看中文| 日韩高清电影好看的电视剧电影| 色一区av在线| 日韩中文字幕网址| 亚洲aⅴ男人的天堂在线观看| 色综久久综合桃花网| 精品亚洲一区二区三区四区五区| 高跟丝袜一区二区三区| 国产精品久久一区| 成人97在线观看视频| 久久天天躁狠狠躁夜夜躁2014| 成人免费网站在线观看| 懂色av中文一区二区三区天美| 欧美日韩国产综合视频在线观看中文| 精品久久久久久久久久国产| 国产精品7m视频| 国产精品白嫩美女在线观看| 国产亚洲福利一区| 亚洲国产精品小视频| 国产精品久久久久77777| 欧美日韩精品在线播放| 欧美成年人视频网站欧美| 日韩欧美在线免费观看| 午夜精品久久久久久99热| 最近中文字幕mv在线一区二区三区四区| 欧美大荫蒂xxx| 亚洲女同精品视频| 亚洲午夜女主播在线直播| 国外成人免费在线播放| 亚洲欧美精品在线| 国产精品国产三级国产专播精品人| 久久亚洲国产精品| 91精品国产色综合久久不卡98口| 4438全国亚洲精品在线观看视频| 亚洲欧美日本另类| 青青草原成人在线视频| 精品福利樱桃av导航| 欧美怡红院视频一区二区三区| 亚洲一区二区三区在线视频| 国产福利成人在线| 精品久久中文字幕| 狠狠躁天天躁日日躁欧美| 亚洲人av在线影院| 亚洲韩国欧洲国产日产av| 日韩成人黄色av| 亚洲www在线| 伊人青青综合网站| www.亚洲免费视频| 久久免费在线观看| 亚洲图片欧美日产| 欧美激情成人在线视频| 最近2019年中文视频免费在线观看| 78色国产精品| 欧美成人全部免费| 午夜精品一区二区三区在线视频| 日韩视频在线一区| 91国产美女在线观看| 这里只有视频精品| 欧美成人性色生活仑片| 亚洲欧美国产精品| 亚洲区中文字幕| 久久69精品久久久久久久电影好| 亚洲视频精品在线| www.亚洲一二| 国产精品1234| 亚洲美女在线观看| 亚洲最大av网站| 精品性高朝久久久久久久| 亚洲综合在线小说| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲人成电影网站色www| 波霸ol色综合久久| 久久久久亚洲精品| 欧美日韩国产色| 在线日韩中文字幕| 日韩av一卡二卡| 国产精品中文字幕久久久| 国产亚洲a∨片在线观看| 91精品国产综合久久香蕉| 国产精品久久在线观看| 精品激情国产视频| 精品久久中文字幕久久av| 国产一区二区三区在线观看视频| 亚洲人午夜色婷婷| 亚洲理论电影网| 欧美中文字幕在线播放| 色一情一乱一区二区| 丝袜亚洲欧美日韩综合| 日韩有码在线播放| 日本一区二三区好的精华液|