Schau dir mal File::Find (dazu am Besten auch das Skript find2perl) und/oder glob an (zum iterieren über die Dateien.)
Als "Inspiration":
perl -le 'for (glob "./*") {$o = $_; tr/[A-Z]/[a-z]/; print $o, $_}'
Wenn man da jetzt noch File::Copy läd, kann man aus dem print einfach ein move machen. (Natürlich sollte das ganze in ein "richtiges" Skript kommen und es sollte zum Beispiel mit "-e $newname" geprüft werden, ob der neue "lowercase"-Dateiname nicht schon existiert etc.)