av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Perl目錄句柄基本操作解析

本文和大家重點討論一下Perl目錄句柄操作,從給定目錄得到其文件名列表的方法還可以使用Perl目錄句柄(directoryhandle),Perl目錄句柄外形及其行為都很像文件句柄。這里和大家簡單分享一下。

目前創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設計、古塔網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

Perl目錄句柄操作(opendir,readdir,closedir)

從給定目錄得到其文件名列表的方法還可以使用Perl目錄句柄(directoryhandle)。Perl目錄句柄外形及其行為都很像文件句柄。打開(使用opendir而非open),從中讀入(使用readdir而非readline),關閉(使用closedir而非close)。不是讀入文件的內容,而是將一個目錄中的文件名(以及一些其它東西)讀入,如下例:

 
 
 
  1. my$dir_to_process="/etc";  
  2. opendirDH,$dir_to_processordie“Cannotopen$dir_to_process:$!”;  
  3. foreach$file(readdirDH){  
  4. print“onefilein$dir_to_processis$file\n”;  
  5. }  
  6. closedirDH;  

同文件句柄一樣,Perl目錄句柄會在程序結束時自動關閉;或者當Perl目錄句柄被重新打開而指向另一個目錄時,也會自動關閉。

在Perl以前的版本中,globbing它會調用別的進程;Perl目錄句柄不會,因此它更有效率,能更有效的利用系統(tǒng)資源。但是,這是一種底層(lower-level)的操作,意指我們需要自己處理更多的事情。

 
 
 
  1. while($name=readdirDIR){  
  2. nextunless$name=~/\.pm$/;  
  3. …moreprocessing…  
  4. }  

上述的語法是正則表達式而非glob。如果想要所有的非點(non-dot)文件(不是由點開頭的文件),可以使用:

 
 
 
  1. nextif$name=~/^\./;   

如果想要除了通常的點(當前目錄)以及點點(父目錄)之外的所有文件,我們可以明確地使用下面的語句:

 
 
 
  1. nextif$nameeq“.”or$nameeq“..”; 

現(xiàn)在我們討論最容易混淆的部分,請打起精神來。readdir操作返回的文件名沒有路徑名部分,而只是文件名。因此,我們的得到的不是/etc/passwd而是passwd。由于這又是一個不同于globbing的地方,人們也經(jīng)常在這里出現(xiàn)混淆。
你需要將路徑名加上,以得到文件的全名(路徑名+文件名):

 
 
 
  1. opendirSOMEDIR,$dirnameordie“Cannotopen$dirname:$!”;  
  2. while(my$name=readdirSOMEDIR){  
  3. nextif$name=~/^\./;#跳過點文件  
  4. $name=“$dirname/$name”;#加上目錄名  
  5. nextunless–f$nameand–rname;#除非是可讀文件如果沒有加上目錄名,則測試部分將只檢測當前目錄下的文件,而不是$dirname下的文件。 

這是使用Perl目錄句柄最常犯的一個錯誤


當前文章:Perl目錄句柄基本操作解析
文章網(wǎng)址:http://uogjgqi.cn/article/cogsgsc.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流