I have not tested it
I wish you did because it does not work the way you expect, if at all.
First, you redefine the perl built-in rename. So a call to rename would resolve to CORE::rename(), not the one you just wrote.
Second, you use neither strict nor warnings, which would have indicated:
Not enough arguments for rename at line 22, near "$eachFile)"
since rename takes a list of two elements as input.
Third, you're using a prototype. Don't. Read When to use Prototypes?, and I quote from a node written by tilly: Prototypes have many silent, nasty and unexpected side-effects..
Last, and most importantly, it does not work (even after correcting the above errors):
$ mkdir -p /tmp/654653
$ cd /tmp/654653
$ mkdir -p FOO/BAR
$ mkdir -p FOO/TZE
$ touch FOO/BAR/BANANA
$ touch FOO/BAR/APPLE
$ touch FOO/TZE/ORANGE
$ perl 654653.pl
mv: cannot stat `//654653.pl': No such file or directory
mv: cannot stat `/BAR/APPLE': No such file or directory
mv: cannot stat `/BAR/BANANA': No such file or directory
mv: cannot stat `/TZE/ORANGE': No such file or directory
mv: cannot stat `/654653/654653.pl': No such file or directory
mv: cannot stat `/654653/FOO/BAR/APPLE': No such file or directory
mv: cannot stat `/654653/FOO/BAR/BANANA': No such file or directory
mv: cannot stat `/654653/FOO/TZE/ORANGE': No such file or directory
I don't want to disencourage from sharing your code, I just wish you tested it first. A working solution to the original problem could be:
use strict;
use warnings;
use File::Find;
my $path = '.';
finddepth(\&pattern, $path);
sub pattern {
print "$_\n";
rename($_, lc($_));
}
__END__
|