2010-04-29 4 views
2

Я пытаюсь написать простой CGI скрипт на Perl, который:Как преобразовать файл в таблицу HTML с помощью Perl?

  • запускает CLI скрипт
  • считывает полученный .out файл и преобразует данные в файл в формате HTML таблицы.

Вот некоторые примеры данных из файла .out:

10.255.202.1 2472327594 1720341 
10.255.202.21 2161941840 1484352 
    10.255.200.0 1642646268 1163742 
10.255.200.96 1489876452 1023546 
10.255.200.26 1289738466 927513 
10.255.202.18 1028316222 706959 
10.255.200.36 955477836 703926 

Любая помощь будет оценена.

+4

Что у вас есть до сих пор и как это не работает? –

+1

Это домашнее задание? – Ether

ответ

0

Это не отвечает на ваш вопрос напрямую, но возможно ли использовать AWK? Не должно быть слишком сложно обернуть весь контент, а затем каждую запись столбца соответствующими тэгами html для создания базовой таблицы.

+3

Да, для выполнения этой задачи можно использовать любой полный язык Turing. Хотя ИМХО, такая задача обработки текста прямо в рулевой рубке Perl. – mob

1

Ниже непроверенный и, возможно, требует много полировки , но это дает примерное представление:

use CGI qw/:standard *table/; 

print 
    start_html('clicommand results'), 
    start_table; 

open(my $csvh, 'clicommand |'); 

while (<$csvh>) { 
    print Tr(map { td($_) } split); 
} 

close($csvh); 

print 
    end_table, 
    end_html; 
+0

Как правило, вы должны кодировать любые метасимволы HTML перед выводом строки (например, '<' ->' < '). Попробуйте HTML :: Entities :: encode_entities. – rjh

+0

Отлично, спасибо, я попробую это. И нет, это не домашнее задание, просто небольшой проект, над которым я работаю, и я действительно не знаю Perl :) – user329313

0

Вы очень вероятно, хотите, чтобы сделать HTML красивее с помощью CSS стилей или добавления границы для стол, но вот простой старт.

#!/usr/bin/perl 

use strict; 
use warnings; 

my $output = `cat dat`; 
my @lines = split /\n/, $output; 

my @data; 
foreach my $line (@lines) { 
    chomp $line; 
    my @d = split /\s+/, $line; 
    push @data, \@d; 
} 

print <<HEADER; 
<html> 
<table> 
HEADER 

foreach my $d (@data) { 
    print "\t", "<tr>"; 
    print map { "<td>$_</td>" } @$d; 
    print "</tr>", "\n"; 
} 

print <<FOOTER; 
</table> 
</html> 
FOOTER 

Это делает следующий вывод:

<html> 
<table> 
     <tr><td>10.255.202.1</td><td>2472327594</td><td>1720341</td></tr> 
     <tr><td>10.255.202.21</td><td>2161941840</td><td>1484352</td></tr> 
     <tr><td>10.255.200.0</td><td>1642646268</td><td>1163742</td></tr> 
     <tr><td>10.255.200.96</td><td>1489876452</td><td>1023546</td></tr> 
     <tr><td>10.255.200.26</td><td>1289738466</td><td>927513</td></tr> 
     <tr><td>10.255.202.18</td><td>1028316222</td><td>706959</td></tr> 
     <tr><td>10.255.200.36</td><td>955477836</td><td>703926</td></tr> 
</table> 
</html> 

Чтобы понять, как изменить внешний вид ваших HTML-таблиц, то w3schools website entry on the table tag это хорошее начало.

+0

Я действительно не понимаю нижний уровень для рабочего кода. –

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