2012-03-28 70 views
0

是否可以使用IO :: Compress :: Zip創建ZIP存檔而不保留傳入文件的完整路徑?Perl:創建ZIP存檔,同時忽略路徑名稱

例如 - 如果我將/tmp/foo/file.pdf添加到一個zip文件中,我希望/ tmp/foo路徑在添加到存檔時被刪除。這可能嗎?是否有另一個模塊可以做到這一點?

+0

我通常由組裝,我需要在一個目錄我之前壓縮文件這樣做,但我知道這是一個廉價和空間效率低下的捷徑。 – 2012-03-28 18:45:36

回答

4

看到documentation for IO::Compress::Zip

FilterName選項雖然此選項可以與OO ointerface使用,它是用一次性接口最 使用。例如,下面的代碼顯示瞭如何使用FilterName從一系列 文件名中刪除路徑組件,然後它們存儲在$ zipfile中。

sub compressTxtFiles 
{ 
    my $zipfile = shift ; 
    my $dir  = shift ; 

    zip [ <$dir/*.txt> ] => $zipfile, 
     FilterName => sub { s[^$dir/][] } ; 
}