To traverse a directory tree and do stuff with some or all of the data files therein, this method works very fast, takes up very little memory, and is a relatively easy framework for handling lots of jobs of this ilk. It involves using the standard unix "find" utility (which has been ported for ms-windows users, of course).
I'm not sure why you think this is better than File::Find
. You've fulfilled none of your objectives, and only made it more dependant on the outside environment, and slower, and take more net memory.
If you really don't like the interface of File::Find, try my File::Finder, which is essentially find implemented in Perl.