![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
Klíč | Význam |
filter | pomocí regulárního výrazu určí, vybere jen některé soubory |
extract | nastavíme-li hodnotu na 1, pak se automaticky zavolá metoda extract (a archiv bude rozbalen) |
limit | omezí počet rozbalovaných souborů na uvedené množství |
Chceme-li rozbalit soubor priklad.tar, pak tedy dle výše uvedeného napíšeme následující kód.
use Archive::Tar;
my $tar = Archive::Tar->new;
$tar->read("priklad.tar");
$tar->extract();
Uvedeme-li parametr extract s pravdivou hodnotou, pak lze program zredukovat o poslední řádek.
use Archive::Tar;
my $tar = Archive::Tar->new;
$tar->read("priklad.tar", "", {"extract"=>1});
Pro rozbalení pouze souborů s příponou html použijeme klíč filter.
$tar->read("priklad.tar", "", {"extract"=>1, "filter"=>'.*html\$'});
Pro vybalení jednoho souboru zde máme metodu extract_file. Zde můžeme jako druhý parametr zadat, kam se má vybalený soubor přesunout.
Pokud nám jde pouze o rozbalení běžného archivu, pak jistě oceníme metodu třídy extract_archive. Ta funguje následovně.
Archive::Tar->extract_archive("priklad.tar");
Soubor rozbalený pomocí Archive::Tar se stává objektem typu Archive::Tar::File. To nám přináší zejména možnost filtrovat soubory podle dalších kritérií.
Uveďme si některá kritéria v tabulce.
Kritérium | Význam |
name | jméno souboru |
size | velikost souboru v bajtech |
type | typ souboru; Archive::Tar pro tento účel exportuje konstanty FILE, HARDLINK, SYMLINK, CHARDEV, BLOCKDEV, DIR, FIFO, SOCKET |
mktime | čas poslední modifikace |
mode | mód |
uid, gid, uname, gname | uživatel, skupina vlastnící soubor |
Pak lze provádět takové věci jako například rozbalení souborů, jejichž velikost nepřesahuje 1000 bajtů. To by se provedlo takto.
$tar->extract(grep {$_->size < 1000 } $tar->get_files);
Taktéž lze rozbalovat podle obsahu souboru. Existuje metoda get_content, jež vrací obsah souboru. Pro rozbalení pouze těch souborů, které obsahují slovo linuxsoft provedeme následující příkaz.
$tar->extract(grep {$_->get_content =~ /linuxsoft/i} $tar->get_files);
Existují další zajímavé metody pro objekty typu Archive::Tar::File, o nichž se lze dočíst v dokumentaci.
Do tvořeného archivu se vždy vloží soubory, které jsou aktuálně v paměti. Ovšem jak přidat další soubory? K tomu máme metodu add_files, které předáme seznam souborů.
Přidání souboru tar.pl do našeho virtuálního seznamu tak provedeme následujícím voláním.
$tar->add_files("tar.pl");
Archivy se zabalují metodou write. Musíme vždy uvést co zabalit a jak to zabalit.
Prvním argumentem určujeme soubor, kam se archiv zapíše. Druhým je pro gzip úroveň komprese od 1 nebo 9 nebo pro bzip2 hodnota COMPRESS_BZIP.
Pro vytvoření nového archivu ze souborů v paměti lze užít například následující příkaz.
$tar->write("novy_archiv.tgz", 9);
Rychlejší cesta pro vytvoření archivu vede přes metodu třídy. Aniž bychom vytvářeli objekt, můžeme volat metodu create_archive. Té předáme požadovaný název výsledného archivu, typ komprese a seznam souborů, které chceme zabalit. Na ukázku přiložme tento příkaz.
Archive::Tar->create_archive( "vysledek.tgz", COMPRESS_GZIP, "tar.pl", "formular.html");
Myšlenka u práce se ZIP archivy je podobná jako u TAR archivů a proto se v rychlosti podívejme na základní operace.
Opět je třeba na začátku načíst archiv, který budeme rozbalovat. To provedeme pomocí metody new.
use Archive::Zip;
my $zip = Archive::Zip->new("archiv.zip");
Poznamenejme, že i zde je k dispozici metoda read, kterou lze přidávat nové soubory z archivů.
Seznam souborů z archivu archiv.zip nyní máme k dispozici. Pro seznam jmen souborů z tohoto archivu stačí zavolat metodu memberNames.
print $zip->memberNames;
Rozbalení proběhne po zavolání metody extractMember. Jako parametr uvedeme seznam souborů, které se mají rozbalit.
$zip->extractMember("titulky.sub");
Se seznamem souborů můžeme volně manipulovat. Pro odstranění některého souboru použijeme metodu removeMember.
$zip->removeMember("nepotrebny_soubor");
Naopak pro přidání souboru využijeme metodu addFile. Do nově tvořeného archivu lze nový soubor přidat pod změněným jménem.
$zip->addFile("data", "nove_jmeno")
Máme-li seznam souborů připraven, můžeme je zabalit.
$zip->writeToFileNamed("vysledek.zip");
Možností Archive::Zip je více. Pokročilejší záležitosti lze nalézt v dokumentaci.
Pro rozbalení RAR archivu lze použít následující sekvenci příkazů.
use Archive::Rar;
$rar = Archive::Rar->new(-archive => "archiv.rar");
$rar->List;
$rar->Extract;
Existuje univerzální modul Archive::Extract, který dokáže rozbalit soubory různých typů. Jeho použití je následující.
use Archive::Extract;
$extract = Archive::Extract->new(archive => "priklad.tar");
$extract->extract;
Naopak dalším modulem zaměřeným na vytváření archivů je Archive::Builder.
Mimo uvedené existuje řada dalších modulů tvaru Archive::.
|
||
KOMENTARZE
Nie ma komentarzy dla tej pozycji. |
||
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
1. |
Pacman linux Download: 5096x |
2. |
FreeBSD Download: 9311x |
3. |
PCLinuxOS-2010 Download: 8800x |
4. |
alcolix Download: 11190x |
5. |
Onebase Linux Download: 9910x |
6. |
Novell Linux Desktop Download: 0x |
7. |
KateOS Download: 6459x |
1. |
xinetd Download: 2623x |
2. |
RDGS Download: 937x |
3. |
spkg Download: 5247x |
4. |
LinPacker Download: 10393x |
5. |
VFU File Manager Download: 3396x |
6. |
LeftHand Mała Księgowość Download: 7484x |
7. |
MISU pyFotoResize Download: 3090x |
8. |
Lefthand CRM Download: 3760x |
9. |
MetadataExtractor Download: 0x |
10. |
RCP100 Download: 3373x |
11. |
Predaj softveru Download: 0x |
12. |
MSH Free Autoresponder Download: 0x |