gpt4 book ai didi

Perl 查找目录和文件的名称但确定它们不存在

转载 作者:行者123 更新时间:2023-12-04 21:44:11 25 4
gpt4 key购买 nike

无论我对 TARGET 使用哪个目录,此 Perl 代码都会正确找到 TARGET 中每个子目录和文件的名称,但随后确定除了“.”之外,它们都不存在。和“..”。

my $source_dir = "C:\\path to directory\\TARGET;

opendir(my $DIR, $source_dir) || die $!;
while (my $file = readdir($DIR))
{
my $file_exists = (-e $file ? "exists" : "does not exist");
print("$file $file_exists\n");
}

输出:

. exists
.. exists
FILE does not exist # where FILE is the name of every other subdirectory or file in TARGET

真正让我困惑的是,如果我将 TARGET 更改为它的子目录之一,脚本会成功导航到该子目录(之前确定它不存在),然后在新子目录中生成相同的输出。

如有任何建议,我们将不胜感激。

最佳答案

readdir 仅返回文件名,而不返回整个路径。因此,-e $file 在当前工作目录中查找 $file,而不是在 $source_dir 中。每个目录都包含名为 ... 的条目,因此可以找到这些条目。但是工作目录中的其他文件都没有与 $source_dir 中的文件同名,因此当 -e 查找它们时找不到它们。

因此您需要将 $source_dir$file 结合起来:

use File::Spec::Functions qw/catfile/;

my $full_path = catfile($source_dir, $file);
my $file_exists = (-e $full_path ? "exists" : "does not exist");
print("$file $file_exists\n");

关于Perl 查找目录和文件的名称但确定它们不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25409878/

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