我有一个文本文件,其中包含一个单独的助记符(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 $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";
}
}
}基本上,在我知道页面中存在一个名称的地方,它并没有向我显示正确的输出。当我知道文件不存在的时候,我得到了很多“文件不存在”。
另外,我没有使用(-e),而是尝试使用:
if ($name =~ $page) 这也没用..。
请帮帮我!
发布于 2014-01-27 17:53:42
假设您想搜索一个包含文本文件的目录,并打印包含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;
}https://stackoverflow.com/questions/21386849
复制相似问题