我只是在看有人可以告诉我如何创建目录内容数组吗?. 不出所料,提供了文件 glob 作为答案。令我惊讶的是,该帖子建议使用glob()
而不是<*>
.
我之所以使用<*>
它,是因为这是我很久以前学到的,从未想过。这不是一个很好的理由。
您更喜欢什么语法来进行通配,为什么?
我只是在看有人可以告诉我如何创建目录内容数组吗?. 不出所料,提供了文件 glob 作为答案。令我惊讶的是,该帖子建议使用glob()
而不是<*>
.
我之所以使用<*>
它,是因为这是我很久以前学到的,从未想过。这不是一个很好的理由。
您更喜欢什么语法来进行通配,为什么?
就个人而言,我认为这<>
严重超载。它有点意思是“从迭代器中读取”,但在确定哪种迭代器适合我的口味时,有太多的魔力和微妙之处。例如<$foo>
,and<$foo{bar}>
意味着非常不同的东西,而神奇的 bare<>
意味着不同的东西。
我更喜欢使用glob
和保留<>
句柄的语法。这样做可以省去弄清楚内容是否<>
是模式而不是句柄(或解析为句柄的东西)的认知负担。也就是说,如果您将<>
符号与“迭代器”而不是“读取”联系起来,您可能更喜欢函数式语法 - 至少对于那些您想要跳过结果而不是生成列表的情况。
您链接的 perldoc 说尖括号语法存在一些问题:
首先进行一级双引号解释,但您不能这么说
<$foo>
,因为这是上一段中解释的间接文件句柄。(在旧版本的 Perl 中,程序员会插入花括号来强制解释为文件名 glob:<${foo}>
。如今,直接将内部函数调用为 被认为更简洁glob($foo)
,这可能是一开始就这样做的正确方法。 )
我自己主要使用File::Find
和它的同类。
这些天我坚持使用glob
,因为与使用尖括号相比,我发现它更具可读性和对新手友好(*)。
(*)perldoc -f glob
有效。