use Cwd; use File::Copy; $DST_DIR = "/home/tmarsh/.fluxbox/"; #das ist das Ziel Verzeichnis $SRC_DIR = "/usr/portage/x11-wm/fluxbox"; #das ist das Quellverzeichnis,ab da alles kopieren mkdir("$DST_DIR",0755) or die "kann $DST_DIR nicht erstellen: $!\n"; #legt das Zielverzeichnis an Fluxfscan("$SRC_DIR"); #ruft die Funktion auf, und fängt in dem verzeichniss an zu arbeiten was ich übergeben habe sub Fluxfscan { my ($workdir) = shift; # hier wird die varaible von dem Funktionsaufruf übergeben my ($startdir) = &cwd; #hier wird festgestellt in welchen Verzeichnis ich mich gerade in der Console befinde chdir($workdir) or die "Kann nicht in $workdir wecheseln: $!\n"; #hier wechselt er von dem Consolen-verzeichnis ins arbeitsverzeichnis opendir(USR,".") or die "Kann $workdir nicht öffnen: $!\n"; my @names = readdir(USR); closedir(USR); foreach my $name (@names) { next if ($name eq "."); #überspringt "." next if ($name eq ".."); # überspringt ".." print "$name\n"; # if (-d $name) { #wenn $name ein verzeichnis ist ... # mkdir("$DST_DIR"."$name",0755) or die "Kann $name nicht anlegen\n"; #legt er in dem DST_DIR den neuen unterverzeichnis namen an # &Fluxfscan($SRC_DIR . $name); #hier ruft er die Funktion wiedrum auf um den inhalt des neuen DIRS festzustellen # next; } copy("$name","$DST_DIR"); #kopieren der datein ins DST_DIR } chdir($startdir) or die "Kann nicht in $startdir wechseln: $!\n"; #wecheslt von dem workdir ins ursprüngleche consolen dir zurück }