What are the comparative advantages of glob('foo*') over ?

后端 未结 3 1391
陌清茗
陌清茗 2021-02-19 05:10

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 the p

相关标签:
3条回答
  • 2021-02-19 05:43

    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.

    0 讨论(0)
  • 2021-02-19 05:52

    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 as glob($foo), which is probably the right way to have done it in the first place.)

    I mostly use File::Find and its ilk myself.

    0 讨论(0)
  • 2021-02-19 06:05

    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.

    0 讨论(0)
提交回复
热议问题