Schrift
[thread]6106[/thread]

Verzeichnisse TARen in PERL (Seite 2)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
pacey
 2004-03-02 08:21
#80440 #80440
User since
2004-03-01
23 Artikel
BenutzerIn
[Homepage] [default_avatar]
guckt euch mal meine (absoluthässliche) lösung an, ich glaub ich werd wenn strat das sieht eine auf die nase kriegen, weil ich system aufrufe anstatt Module nehme :-).

@Heromaster: Probiere deinen Vorschlag nachher aus ;)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
sub use_tar_dirs {
print "=> Using TAR Compression Method\n";
print "=> Compressing Directories\n";
my $tar = Archive::Tar->new;
my $dir = $_[0];
my $tarname = $_[1];
@fn = list_dir($dir);
chdir "./".$dir;
#foreach(@fn){print $_."\n";}
$tar->add_files( @fn );
$tar->write($tarname.'.tar');
}

sub list_dir {
my $os = get_os_version();
my $dir = $_[0];
my @fn;
if($os eq "win"){
chdir ".\\".$dir;
chomp(@fn = `dir /B`);
}
else {
chdir "./".$dir;
@fn = `ls -1`;
}
return(@fn);
}
sub s2a {
my $s = $_[0];
my @a = split(/,/, $s);
return(@a);
}


gruss pacey
Quote
If You don't know what it does, why do you put it in your code

Code: ()
1
2
3
print +(a=>b=>c=>d=>e=>f=>g=>h=>i=>j=>k=>l=>m=>n=>o=>p=>q=>r=>s=>t=>u=>v=>w=>x=>y=>z=>" ")

[9=>20=>18=>19=>-1=>0=>13=>14=>19=>7=>4=>17=>-1=>15=>4=>17=>11=>-1=>7=>0=>2=>10=>4=>17];
kabel
 2004-03-02 10:26
#80441 #80441
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
[E|B
,01.03.2004, 16:14][quote=kabel,01.03.2004, 11:11]tar dient (ursprünglich) nicht der komprimierung, sondern nur der archivierung.

Wieso ursprünglich? Heute doch auch nicht, oder hab ich da was vergessen?[/quote]
stimmt. hatte mich von den optionen z und j blenden lassen.
die rufen die kommandos gzip bzw. bzip2 auf und implementieren es nicht nach.

@pacey: wenn du die schnittstelle der funktion in der ersten zeile der sub schreibst, wird das ganze doch gleich übersichtlicher.
Code: (dl )
1
2
3
sub use_tar_dirs {
my ($target_dir, $filename) = @_;
...

zwei vorteile:
- die schnittstelle ist auf den ersten blick erkennbar
- leicht änderbar; versuche mal bei dir, einen neuen parameter (an eine andere stelle als die letzte) einzufügen. ;)
-- stefan
Crian
 2004-03-03 10:49
#80442 #80442
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=kabel,02.03.2004, 09:26]@pacey: wenn du die schnittstelle der funktion in der ersten zeile der sub schreibst, wird das ganze doch gleich übersichtlicher.
Code: (dl )
1
2
3
sub use_tar_dirs {
    my ($target_dir, $filename) = @_;
    ...

zwei vorteile:
- die schnittstelle ist auf den ersten blick erkennbar
- leicht änderbar; versuche mal bei dir, einen neuen parameter (an eine andere stelle als die letzte) einzufügen. ;)[/quote]
Volle Zustimmung. Allerdings finde ich es noch schöner, sich die Parameter mit shift abzuholen. Damit wird zugesichert (da sie in @_ schlicht nicht mehr vorhanden sind), dass nirgendwo über $_[XYZ] operiert wird. Außerdem ist es imho lesbarer.

Die vom OP verwendete Zugriffsmethode sollte man nur verwenden, wenn man diesen Zugriff braucht (quasi call by reference statt call by value).

Ich verwende sie allerdings manchmal auch in (sehr kurzen) sehr internen privaten Hilfsmethoden von Klassen. Dann deutet die Schreibweise mir selbst beim Lesen schon an, um was für eine Methode es sich hier handelt.\n\n

<!--EDIT|Crian|1078303805-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-03-01 10:35.