use File::Find; use File::Basename; use File::Spec; use strict; find ({ 'wanted' => \&renamefile }, 'c:\\folder1\\folder2'); sub renamefile { my $file = $_; return unless (-f $file); my $dirname = dirname($file); my $file_name = basename($file); my $new_file_name = $file_name; $new_file_name =~ s/\\\\/./g; print "\$file = [$file]\n"; my $resulting_filename = File::Spec->catfile($dirname,$new_file_name); print "\$resulting_filename = [$resulting_filename]\n"; rename($file,File::Spec->catfile($dirname,$new_file_name))or die; } C:\Steve\Dev\PerlMonks\P-2013-08-06@1508-Rename-Fail>perl renameFailDebug.pl $file = [abc.txt] $resulting_filename = [abc.txt]