use strict; use warnings; use 5.010; use File::Find; my $volume_name = "/Volumes/Volume Name/"; for (glob "$volume_name/*") { if (-d) { say $_; find(\&wanted, $_); } } sub wanted { say "****"; say $File::Find::name; say $File::Find::dir; say $_; say "****"; } --output:-- /Volumes/Volume Name//A/B/filename /Volumes/Volume Name//A/B filename