2013-05-13 3 views
1

Я новичок программист. У меня около 100 html-файлов, и из каждого файла я должен извлекать данные из разных строк и хранить отдельно. Я написал следующий код, кто-то, пожалуйста, помогите мне разобраться в недостатках.Я хочу извлечь данные таблицы в html-файле, используя perl

#!/usr/bin/perl -w 
use strict; 
use warnings; 
use HTML::TableExtract ; 
my$te = HTML::TableExtract->new(headers => [qw('Compound' 'Name' 'Adduct' 'Adduct MW (Da)' 'Compound MW (Da)' 'Delta')]) ; 
my @files = </home/akhila/sta/hmdb_hits/com_pks_stn/*.html>; 
foreach my $files(@files){ 
    $te ->parse_file($files) or die "cannot parse file"; 
    foreach my $ts ($te->table()){ 
    print "Table(", join(',', $ts->coords),"):\n"; 
    foreach my$row($ts->rows()){ 
     print join(',', @$row), "\n"; 
    } 
    } 
}  
+4

Что не работает точно? – Xaerxess

+0

Извините, что произошла ошибка копирования. – user2377038

+2

offtopic: только интересно, какая ОС запустила имя интерпретатора с верхним регистром «P» (/ usr/bin/Perl) – jm666

ответ

1

Необходимо знать, как работает quota like operators в perl. Попробуйте следующий код, и вы сразу увидите проблему.

use strict; 
use warnings; 
use Data::Dumper; 
use HTML::TableExtract; 

my $te1 = HTML::TableExtract->new(headers => [qw('Compound' 'Name' 'Adduct' 'Adduct MW (Da)' 'Compound MW (Da)' 'Delta')]) ; 
print Dumper $te1->{headers}; 

my $te2 = HTML::TableExtract->new(headers => ['Compound', 'Name', 'Adduct', 'Adduct MW (Da)', 'Compound MW (Da)', 'Delta']) ; 
print Dumper $te2->{headers};