首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查文件是否位于目录中

如何检查文件是否位于目录中
EN

Stack Overflow用户
提问于 2014-01-27 16:59:09
回答 1查看 122关注 0票数 2

我有一个文本文件,其中包含一个单独的助记符(1000+)列表,还有一个目录,其中也有页面文件。我想看看给定的助记符有多少页在上面。

下面是我目前的代码。

代码语言:javascript
复制
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),而是尝试使用:

代码语言:javascript
复制
if ($name =~ $page) 

这也没用..。

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 17:53:42

假设您想搜索一个包含文本文件的目录,并打印包含mnemonics.txt中单词的文件名,请尝试如下:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21386849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档