gpt4 book ai didi

Perl readdir 作为一个单行?

转载 作者:行者123 更新时间:2023-12-01 15:23:27 27 4
gpt4 key购买 nike

到目前为止,我知道在 Perl 中打开和读取目​​录的两种方法。您可以使用 opendirreaddirclosedir 或者您可以简单地使用 glob 来获取目录的内容。


示例:

使用 opendirreaddirclosedir:

opendir my $dh, $directory;
my @contents = readdir $dh;
closedir $dh;

使用 glob:

my @contents = <$directory/*>;

我被告知在某些情况下 glob 方法会产生不可预知的结果(例如,当它在目录名称中遇到特殊字符时,它在不同的操作系统上可能会采取不同的行动)。

我喜欢 glob 方法的一点是它“快速而肮脏”。这是一条简单的线,它可以完成工作,但如果它不能在所有情况下工作,可能会引入意外且难以发现的错误。

I was wondering if there was a sort of "shorthand" way to use the opendir, readdir, closedir method?

也许是这样的fancy method for slurping a file在我最近发现的一行中。

最佳答案

下面的怎么样?

my @contents = get_dir_contents($dir);

您甚至可以决定如何处理错误,是否应返回 .,是否应返回 ..,是否应返回“隐藏”文件以及是否应返回由于您自己编写了 get_dir_contents,因此该路径已添加到文件名之前。


备选方案:

  • use File::Find::Rule qw( );
    my @contents = File::Find::Rule->maxdepth(1)->in($dir);
  • use File::Slurp qw( read_dir );
    my @contents = read_dir($dir);
  • # Unix only, but that includes cygwin and OS/X.
    my @contents = <\Q$dir\E/.* \Q$dir\E/*>;

关于Perl readdir 作为一个单行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30084091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com