15

我只是在看有人可以告诉我如何创建目录内容数组吗?. 不出所料,提供了文件 glob 作为答案。令我惊讶的是,该帖子建议使用glob()而不是<*>.

我之所以使用<*>它,是因为这是我很久以前学到的,从未想过。这不是一个很好的理由。

您更喜欢什么语法来进行通配,为什么?

4

3 回答 3

12

就个人而言,我认为这<>严重超载。它有点意思是“从迭代器中读取”,但在确定哪种迭代器适合我的口味时,有太多的魔力和微妙之处。例如<$foo>,and<$foo{bar}>意味着非常不同的东西,而神奇的 bare<>意味着不同的东西。

我更喜欢使用glob和保留<>句柄的语法。这样做可以省去弄清楚内容是否<>是模式而不是句柄(或解析为句柄的东西)的认知负担。也就是说,如果您将<>符号与“迭代器”而不是“读取”联系起来,您可能更喜欢函数式语法 - 至少对于那些您想要跳过结果而不是生成列表的情况。

于 2010-01-18T18:42:26.863 回答
10

您链接的 perldoc 说尖括号语法存在一些问题:

首先进行一级双引号解释,但您不能这么说<$foo> ,因为这是上一段中解释的间接文件句柄。(在旧版本的 Perl 中,程序员会插入花括号来强制解释为文件名 glob: <${foo}>。如今,直接将内部函数调用为 被认为更简洁glob($foo),这可能是一开始就这样做的正确方法。 )

我自己主要使用File::Find和它的同类。

于 2010-01-18T17:54:17.533 回答
2

这些天我坚持使用glob,因为与使用尖括号相比,我发现它更具可读性和对新手友好(*)。

(*)perldoc -f glob有效。

于 2010-01-19T15:22:35.767 回答