2013-01-19 101 views
0

我想用Perl和Archive::Rar來提取整個文件夾。例如文件夾/root/picturesPerl Rar整個文件夾

我發現只有一種方法來rar單個文件。

我試圖找到文件夾中的所有文件,然後在rar壓縮文件中保存整個路徑(/root/pictures)。

我只想要/pictures文件夾及其內容。那可能嗎?

+0

你是指路徑而不是包? –

回答

0

首先,你必須從定義目錄中獲取文件的列表:

use File::Find; 

my @content; 
find(\&wanted, '/some/path'); 

sub wanted { 
    push @content, $File::Find::name; 
    return; 
} 

之後,你可以使用存檔::的RAR收拾它。

use Archive::Rar; 
my $rar = Archive::Rar->new(); 
$rar->Add(
     -size => $size_of_parts, 
     -archive => $archive_filename, 
     -files => \@content, 
); 
0

存儲在歸檔文件的文件夾結構將是一樣的,你傳遞給Add方法的文件名。 (雖然你可以添加它們,而完全不使用-excludepaths選擇任何包含的文件夾。)

如果chdir\root目錄添加文件到歸檔之前,並指定所有文件爲pictures\file1.jpg等那麼結果應該如你所願。

像這樣的事情

use strict; 
use warnings; 

use Archive::Rar; 

use autodie; 

chdir '\root'; 

my $rar = Archive::Rar->new(-archive => 'pictures.rar'); 

$rar->Add(-files => [ glob 'pictures\*' ]); 

顯然,如果你想在其他地方存放檔案,你可以添加到rar文件名的路徑。