当前位置:  开发笔记 > 编程语言 > 正文

如何区分文件与Perl中的目录?

如何解决《如何区分文件与Perl中的目录?》经验,为你挑选了4个好方法。

我正在尝试遍历Perl中当前目录的所有子目录,并从这些文件中获取数据.我正在使用grep获取给定目录中所有文件和文件夹的列表,但我不知道返回的值是文件夹名称,哪个是没有文件扩展名的文件.

我怎么能分辨出来呢?



1> Paul Dixon..:

您可以使用-d文件测试运算符来检查某些内容是否是目录.这是一些常用的文件测试操作符

    -e  File exists.
    -z  File has zero size (is empty).
    -s  File has nonzero size (returns size in bytes).
    -f  File is a plain file.
    -d  File is a directory.
    -l  File is a symbolic link.

有关更多信息,请参阅perlfunc手册页

另外,尝试使用File :: Find,它可以为您递送目录.这是一个查找目录的示例....

sub wanted {
     if (-d) { 
         print $File::Find::name." is a directory\n";
     }
}

find(\&wanted, $mydir);



2> Robert Gambl..:
print "$file is a directory\n" if ( -d $file );



3> Andy Lester..:

看看-X运算符:

perldoc -f -X

对于目录遍历,使用File :: Find,或者,如果你不是受虐狂,请使用我的File :: Next模块,它为你创建一个迭代器,不需要疯狂的回调.实际上,您可以让File :: Next ONLY返回文件,并忽略目录.

use File::Next;

my $iterator = File::Next::files( '/tmp' );

while ( defined ( my $file = $iterator->() ) ) {
    print $file, "\n";
}

# Prints...
/tmp/foo.txt
/tmp/bar.pl
/tmp/baz/1
/tmp/baz/2.txt
/tmp/baz/wango/tango/purple.txt

它位于http://metacpan.org/pod/File::Next



4> skiphoppy..:
my @files = grep { -f } @all;
my @dirs = grep { -d } @all;

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有