use strict; use warnings; use File::Find; use File::Copy; my $scandir="path/to/files"; my $outpath="path/to/out/directory"; find(\&update, $scandir); sub update() { if (-f $_) { my $file = $_; $file = uc($file); move("$File::Find::name","$outpath/$file") } }