in reply to using Tk::FileSelect

The problem looks like it stems from the way Tk::FileSelect handles file masks, and its selection verifying feature. You aren't allowed (by default) to pick directories, just files. So when you select /usr/local/*, you're seeing odd results because you're not selecting the directory itself, but all of the files within it.

If you add $fs->configure( -verify => [ '-e' ] ); after you create your selection dialog, it will switch the verification flag from '!-d' (don't select directories) to '-e' (select anything that exists). My test program returns just the directory name when that line is inserted.

For more info, check the CPAN docs for Tk::FileSelect.

Love justice; desire mercy.