У меня есть унаследованный Perl-код, который использует форматы дважды в быстрой последовательности. Вот MWE.Два perl-формата на странице
#!/usr/bin/perl
use FileHandle;
use strict;
use warnings;
sub table {
my ($name, $val);
format_name STDOUT "FMT1";
format_top_name STDOUT "FMT1_TOP";
($name, $val) = ("Item1", 42); write;
($name, $val) = ("Item2", 100); write;
format FMT1_TOP =
Name | Cost
-------------+-------
.
format FMT1 =
@>>>>>>>>>>> | @<<<<
$name, $val
.
}
print "Data 1\n"; table; print "\n";
print "Data 2\n"; table;
Проблема, которую я вижу в том, что Perl, очевидно, думает, что оба набора данных являются частью одной и той же таблицы и не печатает новый заголовок таблицы. Таким образом, выход я получаю это:
Data 1
Name | Cost
-------------+-------
Item1 | 42
Item2 | 100
Data 2
Item1 | 42
Item2 | 100
Я ожидал увидеть:
Data 1
Name | Cost
-------------+-------
Item1 | 42
Item2 | 100
Data 2
Name | Cost
-------------+-------
Item1 | 42
Item2 | 100
Я уверен, что должна быть какой-то close_format
подобной функции, что я пропускаю в конце table()
, но форматы так в прошлом веке, что я забыл, что я когда-то знал о них, и все примеры, которые я могу найти в Интернете, используют только один формат для каждой программы. Что мне не хватает?
Обратите внимание, что заменяя форматы чем-то другим, не является жизнеспособным вариантом в этом проекте в этой конкретной точке.
Извините, но я не уверен, как это отвечает на мой вопрос. Можете ли вы быть более ясными о том, чего не хватает в моем коде? Что мне нужно для того, чтобы сделать первую часть обработки для второй таблицы? –
Это тип заголовка, который интерпретирует интерпретатор perl' в верхней части STDOUT. Однажды. –
OP, похоже, знает об этом и использует его именно для этого. Но они хотят использовать его не один раз. – simbabque