gpt4 book ai didi

perl - 如何在 Perl 中获取嵌套目录内容

转载 作者:行者123 更新时间:2023-12-02 07:13:15 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本来处理某些文件。数据的组织方式如下:有一个文件夹(我们称它为 X)将用于放置我的脚本。在同一个文件夹中有一个名为“数据”的子文件夹。这包含多个具有不同名称的子文件夹,每个子文件夹包含许多文件(没有其他子文件夹,只有文件)。我需要处理子文件夹中的所有文件(更具体地说,对每个文件运行一个函数),然后合并子文件夹中所有文件的结果,因此对于每个文件夹都有一个结果(无论它包含多少文件)。

问题是,我无法访问这些文件,因此我无法在它们上运行我的函数。我现在拥有的是:

$dirname = "data";

opendir ( DIR, $dirname ) || die "Error in opening dir $dirname\n";

while( ($dirname2 = readdir(DIR)) )
{
next if $dirname2 eq ".";
next if $dirname2 eq "..";

opendir ( DIR2, $dirname2 ) || die "Error in opening dir $dirname2\n";

while( ($file = readdir(DIR2)) )
{
next if $file eq ".";
next if $file eq "..";

print( "file:$file\n" );
}

closedir(DIR2);

}
closedir(DIR);

它总是失败并显示消息“打开目录 alex 时出错”。 “alex”恰好是数据目录中的第一个目录。我的问题是 - 问题出在哪里?这甚至是实现我想要做的事情的正确方法吗?我还担心,如果数据文件夹中也有一个文件,我会失败,因为我无法使用 opendir 打开它,或者我可以吗?

PS:对于那些可怕的 Perl 代码感到抱歉 - 我仍在努力学习这门语言。

谢谢,彼得

最佳答案

你可以试试File::Path - 创建或删除目录树

当我运行你的程序时,我认为你必须在打开目录时指定你的完整路径,即,

opendir ( DIR2, $dirname.\\.$dirname2 ) || die "Error in opening dir $dirname2\n"; #running code on windows

它会起作用,试试吧。

关于perl - 如何在 Perl 中获取嵌套目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649596/

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