Perl 如何检查文件是否在目录中
我有一个文本文件,其中包含单个助记符列表(1000+),还有一个目录,其中还包含页面文件。我想看看给定的助记符有多少页 下面是到目前为止我的代码Perl 如何检查文件是否在目录中,perl,file,foreach,directory,exists,Perl,File,Foreach,Directory,Exists,我有一个文本文件,其中包含单个助记符列表(1000+),还有一个目录,其中还包含页面文件。我想看看给定的助记符有多少页 下面是到目前为止我的代码 use strict; use warnings; use File::Find (); my $mnemonics = "path\\path\\mnemonics.txt"; my $pages = "path\\path\\pages\\"; open (INPUT_FILE, $names) or die "Cannot open file
use strict;
use warnings;
use File::Find ();
my $mnemonics = "path\\path\\mnemonics.txt";
my $pages = "path\\path\\pages\\";
open (INPUT_FILE, $names) or die "Cannot open file $mnemonics\n";
my @mnemonic_list = <INPUT_FILE>;
close (INPUT_FILE);
opendir (DH, $pages);
my @pages_dir = readdir DH;
foreach my $mnemonic (@mnemonic_list) {
foreach my $page (@pages_dir) {
if (-e $mnemonic) {
print "$mnemonic is in the following page: $page";
} else {
print "File does not exist \n";
}
}
}
那也没用
请帮忙 假设您要搜索一个充满文本文件的目录,并打印包含mnemonics.txt中单词的文件名,请尝试以下操作:
use strict; use warnings;
my $mnemonics = "path/mnemonics.txt";
my $pages = "path/pages/";
open (INPUT_FILE, $mnemonics) or die "Cannot open file $mnemonics\n";
chomp(my @mnemonic_list = <INPUT_FILE>);
close (INPUT_FILE);
local($/, *FILE); # set "slurp" mode
for my $filename (<$pages*>) {
next if -d "$filename"; # ignore subdirectories
open FILE, "$filename";
binmode(FILE);
$filename =~ s/.+\///; # remove path from filename for output
my $contents = <FILE>; # "slurp" file contents
for my $mnemonic (@mnemonic_list) {
if ($contents =~ /$mnemonic/i) {
print "'$mnemonic' found in file $filename\n";
}
}
close FILE;
}
使用严格;使用警告;
my$mnemonics=“path/mnemonics.txt”;
my$pages=“path/pages/”;
打开(输入文件,$mnemonics)或死亡“无法打开文件$mnemonics\n”;
chomp(my@memonic_list=);
关闭(输入_文件);
本地($/,*文件);#设置“slurp”模式
对于我的$filename(){
下一个if-d“$filename”#忽略子目录
打开文件“$filename”;
二进制模式(文件);
$filename=~s/+\//;#从文件名中删除路径以进行输出
我的$contents=;#“slurp”文件内容
对于我的$mnemonic(@mnemonic_list){
如果($contents=~/$mnemonic/i){
打印“$filename文件中的“$mnemonic”\n”;
}
}
关闭文件;
}
助记符中的条目是什么样子的?它们只是单词,在新行中输入。它大约有1000个单词+你想查看文件内部还是仅查看文件名?我想查看目录“pages”中的文件,并使用txt文件名查看它们是否在那里。。。这有意义吗?很抱歉这些应该是绝对路径吗?如果是这样,它们应该以双反斜杠开始。(事实上,即使在Windows上,您也可以将所有的双反斜杠更改为单正斜杠。)pages目录中没有文本文件。有些方法非常有效!除了一件事。。。如果它出现在多个页面中怎么办?它只输出助记符所在的第一页…它们是什么类型的文件?我认为这会起作用的原因是因为我可以在windows中启动搜索并键入我要查找的助记符,然后它会将其所在的页面吐出..一个.hdp文件是某种图像文件。所以它是一个二进制文件,应该以二进制模式读取(参见上面的修订代码)。不过,这可能还是行不通。可能文本字符串在文件中被编码为宽字符?我不知道该怎么处理。
use strict; use warnings;
my $mnemonics = "path/mnemonics.txt";
my $pages = "path/pages/";
open (INPUT_FILE, $mnemonics) or die "Cannot open file $mnemonics\n";
chomp(my @mnemonic_list = <INPUT_FILE>);
close (INPUT_FILE);
local($/, *FILE); # set "slurp" mode
for my $filename (<$pages*>) {
next if -d "$filename"; # ignore subdirectories
open FILE, "$filename";
binmode(FILE);
$filename =~ s/.+\///; # remove path from filename for output
my $contents = <FILE>; # "slurp" file contents
for my $mnemonic (@mnemonic_list) {
if ($contents =~ /$mnemonic/i) {
print "'$mnemonic' found in file $filename\n";
}
}
close FILE;
}