use DirHandle; use File::Find; use File::Copy; use Data::Dumper; use strict; use warnings; my $dir= "."; my $dir2="c:\\mlx\\"; lista_dirs($dir,$dir); #lista_dirs2($dir2,$dir2); sub lista_dirs{ my ($dir, $dirname) = @_; my (@dirs, @files); opendir DIR, "$dir"; my @dircontent = grep { /[^\.]/ } readdir(DIR); closedir DIR; # opendir DIR2, "$dir2"; #my @dircontent2 = grep { /[^\.]/ } readdir(DIR); #closedir DIR2; # @dirs2=(); #@files2=(); @dirs = (); @files = (); foreach(@dircontent) { if(-d "$dir/".$_) { push @dirs, $_; } else { push @files, $_ if($_ =~ /\.txt$/); } } #foreach(@dircontent2){ #if(-d "$dir2/".$_) { #push @dirs2, $_; #} else { # push @files2, $_ if($_ =~ /\.txt$/); #} #} foreach my $d(@dirs) { lista_dirs("$dir/" .$d, $d); } foreach my $file (@files) { $/ = ''; print $dir, "\n"; print $file, "\n"; print "this is $dir2 \n"; print "this would be $dir2$dir \n"; print "this should be $dir2/$dir/$file \n"; print "do you see the problem yet? \n"; move ("$dir/$file","$dir2/$dir/$file") or die "Unable to move $!"; } return; }