2014-01-27 4 views
2

У меня есть текстовый файл со списком отдельных мнемоник (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"; 
     } 
    } 
} 

В принципе, где я знаю, что имя существует на странице, она не показывает мне правильный вывод. Я получаю много «Файл не существует», когда я это знаю.

Кроме того, вместо (-е) Я попытался с помощью:

if ($name =~ $page) 

и что не получилось ..

Пожалуйста, помогите!

+0

Что делать записи в мнемонике выглядеть ? – ooga

+0

это просто слова, введенные на новые строки. Это около 1000 слов + –

+0

Вы хотите заглянуть внутрь файлов или просто в имена файлов? – ooga

ответ

1

Предполагая, что вы хотите найти каталог полного текстовых файлов и печать имен файлов, которые содержат слова из слов 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; 
} 
+0

В каталоге страниц нет текстовых файлов –

+0

awesome это отлично работало! кроме одной вещи ... что, если есть более одной страницы, в которой она появляется? Он выводит только первую страницу, в которой находились мнемоники ... –

+0

В порядке, на самом деле это только чтение всего 1 страницы. Когда-либо. –

Смежные вопросы