gpt4 book ai didi

perl - 将目录列表存储在数组中

转载 作者:行者123 更新时间:2023-12-03 20:27:34 24 4
gpt4 key购买 nike

我收到了一个 Perl 脚本,它当前从文本文件中读取目录列表并将它们存储在字符串向量中。我想修改它,让它读取当前文件夹中所有目录的名称,并将它们存储在向量中。这样,用户不必在当前文件夹中的目录列表每次更改时都修改输入文件。

我对 Perl 一无所知,除了它看起来像 Perl 中的数组索引从 0 开始(就像在 Python 中一样)。我有 bash 和 Python 的基本知识,但我不想用 Python 从头开始​​重写脚本。这是一个又长又复杂的脚本,我不确定我是否能够用 Python 重写它。你能帮助我吗?这是当前正在读取文本文件的脚本部分:

#!/usr/bin/perl
use Cwd;
.
.
.
open FILES, "<files.txt" or die; # open input file
<FILES> or die; # skip a comment
my $nof = <FILES> or die; # number of directories
<FILES> or die; # skip a comment
my @massflow; # read directories
for (my $i = 0; $i < $nof; $i++){
chomp($massflow[$i] = <FILES>);
}
.
.
.
close(FILES);

PS 我认为该脚本是不言自明的,但可以肯定的是,这篇文章打开了一个名为“files.txt”的文本文件,跳过一行,读取目录数,跳过另一行并读取,一个每行的名称,当前文件夹中所有目录的名称,如“files.txt”中所写。

编辑我按照@Sobrique 的建议编写了这个脚本,但它还列出了文件,而不仅仅是目录:

#!/usr/bin/perl
use Cwd;

my @flow = glob ("*");

my $arrSize = @flow;
print $arrSize;
for (my $i = 0; $i < $arrSize; $i++){
print $flow[$i], "\n";
}

最佳答案

它比你想象的要简单:

my @list_of_files = glob ("/path/to/files/*"); 

如果您想按条件过滤 - 例如“它是目录吗”,您可以:

my @list_of_dirs = grep { -d } glob "/path/to/dirs/*"; 

关于perl - 将目录列表存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37786495/

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