use strict; use File::Find; use File::Basename; my($topdir) = '/'; # where you want to start from my(@files) = find ( \&wanted, "$topdir" ); foreach (@files) { my($dir) = dirname($_); if ($dir ne $prev_dir) { print "

" . $dir . "

\n"; $prev_dir = $dir; } print "
" . $_ . "
\n"; } sub wanted { /\.mp3$/ && -f; }