我只是在看Can someone tell me how to create an array of directory contents?。不出所料,提供文件全球作为答案。让我感到惊讶的是该帖子建议使用glob()
而不是<*>
。
我使用<*>
,因为这是我很久以前学到的,从未考虑过。这不是一个好理由。
您喜欢使用什么语法进行通配?为什么?
答案 0 :(得分:12)
就我个人而言,我认为<>
严重超载。它有点意思是“从迭代器中读取”,但在确定哪种迭代器符合我的口味时,有一点太多的魔力和微妙之处。例如<$foo>
和<$foo{bar}>
意味着截然不同的事情,神奇的<>
意味着不同的东西。
我更喜欢使用glob
并为句柄保留<>
语法。这样做可以节省认知负担,即确定<>
的内容是模式而不是句柄(或解析为一个)。也就是说,如果您在心理上将<>
符号与“迭代器”而不是“读取”相关联,那么您可能更喜欢使用函数语法 - 至少对于您想要跳过结果而不是生成列表。
答案 1 :(得分:10)
您链接的perldoc表示角括号语法存在一些问题:
一级双引号 首先解释,但是你 不能说
<$foo>
,因为那是一个 间接文件句柄,如中所述 上一段。 (在较旧的 Perl的版本,程序员会 插入大括号以强制使用 解释为文件名glob:<${foo}>
。这些天,考虑到了 更清洁,以调用内部功能 直接为glob($foo)
,即 可能是完成它的正确方法 首先。)
我自己主要使用File::Find
及其同类。
答案 2 :(得分:2)
这些天我坚持使用glob
,因为与使用尖括号相比,我发现它更具可读性和新手友好性(*)。
(*)perldoc -f glob
有效。