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.
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.
Love justice; desire mercy.