Perl提供大量處理不同文件格式的內置函數和外來模塊。特別是,它可以通過Archive::Zip模塊,動態建立和閱讀ZIP壓縮文件,而不必依賴外來工具和實用工具。下面學步園小編來講解下怎樣用Perl動態建立ZIP壓縮文件?
怎樣用Perl動態建立ZIP壓縮文件
首先,在Perl提示符下運行以下命令下載並安裝該模塊(如果你還沒有安裝它):
perl>perl-MCPAN-e"installArchive::Zip"
注意,Archive::Zip模塊依靠zlib庫運行,因此在安裝過程中,系統可能要求你下載並安裝這個庫。
建立ZIP壓縮文件
首先我們看一個簡單的例子。動態建立一個包含幾個其它文件的ZIP壓縮文件。輸入(或複製)如列表A所示的腳本:
列表A
#!/bin/perl
useArchive::Zip;#imports
$obj=Archive::Zip->new();#newinstance
@files=('mystuff/ad.gif',
'mystuff/alcon.doc',
'mystuff/alcon.xls');#filestostore
foreach$file(@files){
$obj->addFile($file);#addfiles
}
if($obj->writeToFileNamed('dummy.zip')!=AZ_OK){#writetodisk
print"Errorinarchivecreation!";
}else{
print"Archivecreatedsuccessfully!";
}
怎樣用Perl動態建立ZIP壓縮文件
這段腳本相當簡單,但值得仔細看一看。第一步是輸入Archive::Zip模塊,並初始化Archive::Zip對象的一個實例。接下來,將所有文件清單以及它們在磁碟中的位置進行壓縮,保存為一個Perl數組。要記住的是,腳本(準確地說,運行腳本的用戶)必須擁有訪問這些磁碟位置的許可,否則建立壓縮文件的過程就會失敗。
然後,用foreach()循環遍歷這個數組,用對象的addFile()方法在壓縮文件中增加列出的文件。一旦循環完成,則通過調用writeToFileNamed()方法把最終的壓縮文件寫入磁碟,writeToFileNamed()方法接受所建立的ZIP文件的完整路徑和名稱。記住,腳本必須擁有向指定的磁碟位置寫入文件的許可;否則,writeToFileNamed()方法將會失敗,因而不能建立壓縮文件。
特別要注意調用writeToFileNamed():方法的返回值。如果文件被正確寫入,Archive::Zip返回一個AZ_OK值,在往後操作前系統會檢查這個值。之後在這個文件中你還會看到這個返回值。
要應用上面的腳本實例,請修改@files數組的內容以反映你的當地系統配置,並試圖在命令提示符或瀏覽器中執行它。如果一切運行正常,這段腳本應該會找到並將所有文件讀入一個叫做dummy.zip的文件中。
查看ZIP壓縮文件內容
如何查看一個現有的壓縮文件呢?Archive::Zip帶有一個read()方法,可以閱讀一個壓縮文件的內容,並可訪問與單個文件有關的詳細信息。列表B是它的一個應用實例:
列表B
#!/bin/perl
useArchive::Zip;#imports
$obj=Archive::Zip->new();#newinstance
$status=$obj->read("dummy.zip");#readfilecontents
if($status!=AZ_OK){
die('Errorinfile!');
}else{
foreach$member($obj->members()){#printfileinformation
print$member->fileName(),",",$member->uncompressedSize(),":",$member->compressedSize(),"n";
}
}
這裡,read()方法用於閱讀ZIP壓縮文件並獲得與其內容有關的信息。然後,調用members()方法返回一個結構化對象數組,每個數組元素代表壓縮文件中的一個單獨文件。通常來說,數組中的每個對象包含相應文件的名稱信息、它的許可模式、狀態、壓縮類型、大小以及最後一次修改時間。我們可以用一個循環方便地提供這些信息,並對它們重新格式化,使它更具可讀性,如上面的列表B所示。
以上就是關於「怎樣用Perl動態建立ZIP壓縮文件」的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平台!