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