2017-02-22 14 views
0

Я попытался преобразовать .txt в формат .html. Так я попробовал следующий код для преобразования, а также должен указывать разные названия заголовков для каждого столбца в формате таблицы с использованием perl.Как преобразовать содержимое .txt в формат .html с помощью perl?

входного файла: input.txt

1:Explicit Placement blockages are created in the pad regions ?:Yes:INCORRECT:To Be Done 
2:Explicit Routing blockages are created in the pad regions ?:Yes:INCORRECT:To Be Done 
3:Is Complete bond pad meal is used for top level power hookup ?:Yes:INCORRECT:To Be Done 

код, который я пробовал:

#!/usr/bin/perl 
use strict; 
use warnings; 
open my $HTML, '>', 'output.html' or die $!; 
print $HTML <<'_END_HEADER_'; 
<html> 
<head><title></title></head> 
<body> 
_END_HEADER_ 
open my $IN, '<', 'input.txt' or die $!; 
while (my $line = <$IN>) { 
    $convert=split(/\:/,$line); 
    print $HTML $convert; 
} 
print $HTML '</body></html>'; 
close $HTML or die $!; 

Ожидаемый результат:

Колонка 1 должен печатать все предложение для каждой строки в соответствии с серийным номером вице. т.е. от (Явные закупорки размещения создаются в регионах прокладочных)

|s.no|column1  |column2|column3 |column4 | 
|1 |Explicit.... |yes |INCORRECT|To be done | 
|2 |Explicit.... |yes |INCORRECT|To be done | 
|1 |Is.......... |yes |INCORRECT|To be done | 
+0

Что ваш ожидаемый результат и ваш полученный результат? Потому что вы упоминаете «названия заголовков для каждого столбца», но в столбце для кода нет ничего. Если это дает вам реальную ошибку или предупреждение, что такое сообщение? – AntonH

+1

Добро пожаловать на сайт! Ознакомьтесь с [tour] (https://stackoverflow.com/tour) и страницей [how-to-ask] (https://stackoverflow.com/help/how-to-ask/), чтобы узнать больше о том, ищем. В этом случае, пожалуйста, [отредактируйте свой вопрос] (https://stackoverflow.com/posts/42400948/edit), чтобы включить ожидаемый результат и результат, который вы фактически видите. – cxw

+0

Кроме того, 'split' возвращает массив. То, как вы его используете, в скаляр, я верю, возвращает размер результирующего массива, а не элементы раскола. – AntonH

ответ

4

С минимальными изменениями кода:

use strict; 
use warnings; 

open my $HTML, '>', 'output.html' or die $!; 
print $HTML <<'_END_HEADER_'; 
<html> 
<head><title></title></head> 
<body> 
<table> 
_END_HEADER_ 

open my $IN, '<', 'input.txt' or die $!; 
while (my $line = <$IN>) { 
    chomp $line; 
    print $HTML '<tr><td>' . join('</td><td>', split(/:/,$line)) . "</td></tr>\n"; 
    #or 
    #print $HTML '<tr><td>' . $line =~ s|:|</td><td>|gr . "</td></tr>\n"; 
} 
close $IN or die $!; 
print $HTML <<'_END_FOOTER_'; 
</table> 
</body> 
</html> 
_END_FOOTER_ 
close $HTML or die $!; 

будет производить следующий HTML-таблицу:

<html> 
<head><title></title></head> 
<body> 
<table> 
<tr><td>1</td><td>Explicit Placement blockages are created in the pad regions ?</td><td>Yes</td><td>INCORRECT</td><td>To Be Done</td></tr> 
<tr><td>2</td><td>Explicit Routing blockages are created in the pad regions ?</td><td>Yes</td><td>INCORRECT</td><td>To Be Done</td></tr> 
<tr><td>3</td><td>Is Complete bond pad meal is used for top level power hookup ?</td><td>Yes</td><td>INCORRECT</td><td>To Be Done</td></tr> 
</table> 
</body> 
</html> 
+0

Он отлично работает @ jm666 –

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