It also makes the directory handling more complicated as I need to check or create (regardless) the output folder for and every file created. Unless, I suppose, File:Find returns files in blocks so I can check the last folder created and only mkdir when needed.
Well if you think about it, you have to test each file and directory to find out if you are in the right one, then if each file in that subdir has a .png ending.
I think to save cpu cycles, in your case, I would run File::Find with a directory test before the file test. $File::Find::prune = 1 will skip processing any files in that subdir. Something like:
find sub {
# first filter out your directories
if (-d && $_ !~ / my_target_dirs_regex / ) {
$File::Find::prune = 1;
return;
}
# if you make it to here, you are in your target subdir
# now do your ImageMagick processing and mkdir
# it has to check each file for a .png ending
if (-f && $_ =~ / (.*)\.png$ / ) {
# do mkdir stuf
# do ImageMagick stuff
}
# or you could just push the files into an array for later processing
# push @goners, $File::Find::name;
}, @ARGV;
|