What are the comparative advantages of glob('foo*') over <foo*>?
I was just looking at Can someone tell me how to create an array of directory contents?.  Unsurprisingly, file globs were offered as an answer.  What surprised me was that开发者_StackOverflow中文版 the post recommended using glob() rather than <*>.
I use <*> because that is what I learned a long time ago and have never thought about it.  Which is not a good reason.
What syntax do you prefer for globbing, and why?
Personally, I think that <> is badly overloaded. It sort of means "read from an iterator" but there's a little too much magic and subtlety in determining which iterator of what kind for my taste. e.g. <$foo> and <$foo{bar}> mean very different things, and the magical bare <> means something different yet.
I prefer to use glob and reserve the <> syntax for handles. Doing that saves the cognitive burden of figuring out whether the contents of the <> is a pattern rather than a handle (or something that resolves to one). That said, if you mentally associate the <> notation with "iterator" instead of "read" you might prefer that to the functional syntax -- at least for those cases where you want to step over the results rather than generate a list.
That perldoc you linked says there's some issues with the angle-bracket syntax:
One level of double-quote interpretation is done first, but you can't say
<$foo>because that's an indirect filehandle as explained in the previous paragraph. (In older versions of Perl, programmers would insert curly brackets to force interpretation as a filename glob:<${foo}>. These days, it's considered cleaner to call the internal function directly asglob($foo), which is probably the right way to have done it in the first place.)
I mostly use File::Find and its ilk myself.
These days I stick with glob, because I find it to be more readable and newbie-friendly(*) as compared to using angle brackets.
(*) perldoc -f glob works.
 加载中,请稍侯......
      
精彩评论