+ -
当前位置:首页 → 问答吧 → 温故而知新,Perl的文件遍历

温故而知新,Perl的文件遍历

时间:2011-01-28

来源:互联网

glob("*"); # 搜索当前路径下的所有文件和目录

glob("./*"); # 同上

glob("*.h *.cpp"); # Perl的glob支持同时搜索多个匹配,用空格分隔。

glob("./Program Files/*"); # 基于上面的原因,搜索带空格的路径时会有问题,
glob("'./Program Files/'*"); # 此时需要将含有空格的路径放入单引号中。

$path = "Program Files";
glob("'./$path/'*"); # 单引号中有变量也支持

glob("'./'*"); # 但如果单引号中并没有空格,glob就罢工了...将会找不到任何东西,奇怪

=一个例子
这里是多行注释
=cut
my @dir_files = glob("*")
foreach (@dir_files)
{
  if (-d $_) # 检测路径是否为目录
  {
  ...
  }
}

作者: DDGG   发布时间: 2011-01-28

温得好,新在哪呢?

作者: sunming2008   发布时间: 2011-01-28

一般直接<*>,很少用glob。

作者: iambic   发布时间: 2011-01-28

我倒是觉得glob挺好用的。

作者: fibbery   发布时间: 2011-01-28

新就是带空格的路径,还有单引号里面如果没有空格,glob就会罢工的问题。

作者: DDGG   发布时间: 2011-01-28

CSDN博客好像当机啦!

作者: DDGG   发布时间: 2011-01-28

转义空格最好在前面加个斜杠。用单引号太丑了。多个pattern用*.{h,cpp}比较好,不太喜欢用空格分隔多个pattern这种写法,在shell里自然还可以,作为一个函数提供这个设计就有点烂。另外可以用bsd_glob,应该就没有那种空格问题了。

作者: iambic   发布时间: 2011-01-28

“斜杠”应该是“反斜杠”:'.../program\ files/...'

作者: iambic   发布时间: 2011-01-28

bsd_glob应该引用哪个模块呢

作者: DDGG   发布时间: 2011-01-28