Another problem that the others did not mention is that readdir will return file NAMES, not full paths.
If you do:
my $dir='h:\test';
opendir(DIR, $dir) || die "Unable to open directory: $!";
my @file_names = grep {-f $_} map "$dir\\$_",readdir(DIR);
closedir(DIR);
you'll wind up with a list in @file_names of the full paths of the files, and ONLY the files, in that directory.
You could also add a grep on /mp3/i in that list to make sure you only get the mp3 files, since those are what you're looking for...
--
Mike