sub rename_dirs {
my ( $top_dir, $name_map, $regex ) = @_;
print "start rename dirs $top_dir, $name_map \n";
opendir (my $dh, $top_dir) or die "Can't open $top_dir: $!";
my $save_dir = getcwd();
chdir $top_dir;
while (my $name = readdir $dh) {
next if ($name eq '.') or ($name eq '..');
print 'name :'.$name,"\n";
if ( ( -d $name ) && ( exists $name_map->{$name} ) ) {
my $new_name = $name_map->{$name};
print 'newdir :'.$new_name."\n;
rename_file_or_dir( $name, $new_name );
$name = $new_name;
}
elsif ( -f $name ) {
if (( my $base_name = $name) =~ s/\.config$// ) {
if ( $name_map->{$base_name} ) {
my $new_name = $name_map->{$base_name} . '.config'
+;
print 'newfile:'.$new_name."\n;
# print $new_name;
rename_file_or_dir( $name, $new_name );
change_file( $mapfile, $name_map, $regex );
}
}
}
if ( -d $name) {
print "down :'.$name."\n";
rename_dirs( $name, $name_map, $regex );
print "up :'.$name."\n";
}
}
chdir $save_dir;
}
See what you can determine from that |