my $dir = './'; opendir(DIR, $dir) || die "Can't open $dir: $!"; my @files = readdir DIR; closedir DIR; my $n; # new name for file foreach $f (@files) { $n = lc $f; # convert to lower case $n =~ tr/_\{\}\[\]/ /; # get rid of certain brackets while ($n =~ / /) {$n =~ s/ / /g;} # remove double quotes $n =~ s/\s*.\s*/./g; # dots should have no white space $n =~ s/^\s*\d+\s*//g; # remove starting numbers $n =~ s/^\s*\W+\s*//g; # remove starting non-words if ($n =~ m/^\s*(.*)\w*$/g) {$n = $1}; $file_exists = (($n ne lc $f) && (-e $n)); if ($f ne $n && !$file_exists) {rename $f, $n;} }