У меня есть сетевая папка, в которой я должен найти файл и получить полный путь к этому конкретному файлу.
я пытался реализовать с помощью рекурсии.
use dirsearch;
use Cwd;
$dir = "\\\\moon\\builds502\\TEST\\Q1105ASRAWBF100044";
$filename="oncrpc_prot.c";
$path=dirsearch->search($dir,$filename);
print "path of $filename :: $path";
это Perl-скрипт, который в свою очередь использует модуль, который выглядит так
package dirsearch;
sub search{
$arg0=shift;
$dir=shift;
$filename=shift;
print $dir,"\n";
print $filename,"\n";
#chdir($dir) or die $!;
chomp($dir);
chomp($filename);
opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
#Using a regular expression to ignore files beginning with a period
unless ($file =~ m/^\./){
if(-d "$dir\\$file"){
#closedir(DIR);
$dir=$dir.'\\'.$file;
print $dir,"\n";
search($dir,$filename);
}
else{
if($file =~ /$filename/){
$path=$dir."\\".$file;
#print $path,"\n";
return $path;
}
}
}
}
$str="file not found";
return $str;
#closedir(DIR);
}
1;
сетевой путь состоит из системы папок и подпапок. После 2-х запусков он достигает состояния «Такой файл или каталог не найден в diresearch.pm в строке 11», хотя каталог существует.
вывод выглядит так
\\moon\builds502\TEST\Q1105ASRAWBF100044
oncrpc_prot.c
\\moon\builds502\TEST\Q1105ASRAWBF100044\Crm
oncrpc_prot.c
No such file or directory at dirsearch.pm line 11.
кто-нибудь, пожалуйста, помогите мне узнать мою ошибку или в любом случае выполнить мое требование