Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 识别普通文件夹和“文件夹”之间的差异&引用/"E&引用;文件夹_Perl_File_Directory - Fatal编程技术网

Perl 识别普通文件夹和“文件夹”之间的差异&引用/"E&引用;文件夹

Perl 识别普通文件夹和“文件夹”之间的差异&引用/"E&引用;文件夹,perl,file,directory,Perl,File,Directory,我正在编写一个Perl脚本来自动从文件夹复制PDF 用户无法访问他们没有权限访问的文件夹,这样他们就不会意外地访问任何他们不应该访问的信息 我有一个粗略的模型,除了一个bug外,它一直在查看和。文件夹,并以无限循环的方式打开它们 检查以下条件语句以查看文件是PDF,然后将其传递到mycopyPDF,mycopyPDF检查异常,然后复制文件;否则,如果某个文件夹扫描该内容并重复,它将通过并尝试作为文件夹打开 我尝试了许多方法来忽略和。但它总是导致忽略所有其他子文件夹。有人有工作吗 if ($fil

我正在编写一个Perl脚本来自动从文件夹复制PDF

用户无法访问他们没有权限访问的文件夹,这样他们就不会意外地访问任何他们不应该访问的信息

我有一个粗略的模型,除了一个bug外,它一直在查看
文件夹,并以无限循环的方式打开它们

检查以下条件语句以查看文件是PDF,然后将其传递到my
copyPDF
,my
copyPDF检查异常,然后复制文件;否则,如果某个文件夹扫描该内容并重复,它将通过并尝试作为文件夹打开

我尝试了许多方法来忽略
但它总是导致忽略所有其他子文件夹。有人有工作吗

if ($file =~ /\.pdf$/i) {
  print "$file is a pdf\n";
  $fileLocation = "$directoryName/$file";
  copyPDF("$fileLocation", "$file");
}
elsif ($file == '.') {
  #print "argh\n";
}
else {
  $openFolder = "$directory/$file";
  print "*$openFolder";
  openNextDirectory("$openFolder");
}

始终使用
严格使用;使用警告

$file == '.'
产生

Argument "." isn't numeric in numeric eq (==)
因为您要求Perl比较两个数字。你应该使用

$file eq '.'

有关perl运算符的更多信息,请参阅。

使用
文件::查找模块

use File::Find;
use File::Copy;

my $directory = 'c:\my\pdf\directory';
find(\&pdfcopy, $directory);

sub pdfcopy() {
    my $newdirectory = 'c:\some\new\dir';
    return if ($File::Find::name !~ /\.pdf$/i);
    copy($File::Find::name, $newdirectory) or 
    die "File $File::Find::name cannot be copied: !";
}

这个老问题有一些很好的答案,可以解决这个问题和类似的问题:


向我们显示查找文件的所有代码。您正在使用File::Find吗?告诉我们所有这些。当我们在做的时候,没有任何理由。
下一步如果$file=~/^\.\。?$/
是解决这个问题的常用方法。我建议
$file ne'..和&$file ne'.
更加明确,并且需要读者更少的思考。。。。并且与名为
“\n”
”的文件不匹配。\n“
。缺少
请使用警告;严格使用,你的代码甚至没有解析,无用地使用了错误的原型,你的正则表达式是错误的,你拼错了
$。正则表达式(大部分)是正确的,但仅在第二次编辑之后。您修复了解析错误和正则表达式,但没有修复其他3个问题。