Unfortunately, I have not tried anything yet. It's more like I am just thinking of how I should do it. Below is the idea that I was thinking.
Create a recursive hash and store each subdirectory as a key.
Loop through the recursive hash and place the 'directory' in a new hash. So, if the key is already in the new hash, then continue to the next one.
But the above idea might be making things complicated. I was wondering if there is a simple approach to this or I may just be over complicating the problem.
Comment on Re^2: How to Get the Last Subdirectories
You are basically interested in those directories in your tree which have no subdirectories; so the following algorithm should work:
Initially create an empty hash %leaf_directories
Whenever File::Find drops you into a directory $d, do the following:
Remove the parent directory of $d from the hash, i.e. if $d contains the full path, do a delete $leaf_directories{dirname($d)}. Of course this will fail occasionally (because there is no corresponding entry), but we ignore this.
Add $d to your hash, i.e. $leaf_directories{$d}=1
In the end, keys $leaf_directories should be the list of the directories without subdirectories.