Also ich habe zunächst mal folgenden Code:
Perl
#!/usr/bin/perl
use Digest::MD5 qw(md5 md5_hex md5_base64);
$directory = '/home/gregor/.work/.web';
$projects[0] = 'k-progs_product_page';
foreach (@projects) {
$project = $_;
copy_rec($directory.'/k-core', $directory.'/'.$project);
}
sub copy_rec {
my($src, $dest) = @_;
opendir($dir, $src) or die "Could not open ".$src."\n";
@contents = readdir($dir) or die "Could not read ".$src."\n";
closedir($dir) or die "Could not close ".$src."\n";
$i = 0;
while($contents[$i] ne '') {
$i++;
$n = $i - 1;
$n = $contents[$n];
if ($n ne '..' && $n ne '.' && $n ne '.bzr') {
print "| '".$n."'\n";
if (-f $src.'/'.$n) {
copy_file($src.'/'.$n, $dest.'/'.$n);
} else { if (-d $src.'/'.$n) {
if (!-d $dest.'/'.$n) {
mkdir($dest.'/'.$n, 755);
}
print "> copy rec\n";
copy_rec($src.'/'.$n, $dest.'/'.$n);
} }
}
}
print "-\n";
}
sub copy_file {
my($src, $dest) = @_;
my $src_text;
my $dest_text;
if (-s $src != 0) {
open(SRC, $src) or die "Could not open ".$src."\n";
while($part = <SRC>) {
$src_text = $src_text.$part;
}
close(SRC) or die "Could not close ".$src."\n";
} else {
$src_text = '';
}
if (-s $dest != 0) {
open(DEST, $dest) or die "Could not open ".$src."\n";
while($part = <DEST>) {
$dest_text = $dest_text.$part;
}
close(DEST) or die "Could not close ".$src."\n";
} else {
$dest_text = '';
}
$src_sum = md5_hex($src_text);
$dest_sum = md5_hex($dest_text);
}
Alles anzeigen
Die Ausgabe sieht wie folgt aus:
Zitat von BashAlles anzeigen
| 'private'
> copy rec
| '.htaccess'
| 'page_code'
> copy rec
| '1.php'
-
-
-
Allerdings ist im Verzeichnis /home/gregor/.work/.web/k-core WESENTLICH mehr als nur der Ordner private/ auch in den unter Ordnern übrigens
es sieht also so aus als würde er die Schleife abbrechen nachdem er copy_rec() aufruft...
Woran könnte das liegen?
Und, was viel wichtiger ist, wie kann ich das Problem beheben?
Schonmal danke
MFG Greg10