perl: format (Правильно сформировать вывод)

Модератор: Модераторы разделов

Аватара пользователя
VarLog
Сообщения: 311
ОС: openSUSE 12.2

perl: format

Сообщение VarLog »

Добрый день.

Разбираюсь с format perl_а.
Требуется вывести простую таблицу: шапка и содержимое. Написал такой шаблон:

Код: Выделить всё

format OUT =
@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - @<<<<<<
$orig_zname, $zcode
|------------------------------------------------------------------------------------------------------------------|
|@|||||||||||| |@|||||||| |@|||||||| |@|||||||| | @||||||||||||||||||||||| | @||||||||||| | @||||||||||||||||||||| |
(shift(@a)||'', shift(@a)||'', shift(@a)||'', shift(@a)||'', shift(@a)||'', shift(@a)||'', shift(@a)||'')
|------------------------------------------------------------------------------------------------------------------|
|@|||||||||||| |@|||||||| |@|||||||| |@|||||||| | @||||||||||||||||||||||| | @||||||||||| | @||||||||||||||||||||| | ~~
(shift(@b)||'', shift(@b)||'', shift(@b)||'', shift(@b)||'', shift(@b)||'', shift(@b)||'', shift(@b)||'')
|------New supply--------------------------------------------------------------------------------------------------|
|@|||||||||||| |@|||||||| |@|||||||| |@|||||||| | @||||||||||||||||||||||| | @||||||||||| | @||||||||||||||||||||| | ~~
(shift(@c)||'', shift(@c)||'', shift(@c)||'', shift(@c)||'', shift(@c)||'', shift(@c)||'', shift(@c)||'')
|------------------------------------------------------------------------------------------------------------------|

.

Есть две проблемы.
Первая: в @c встречается 0 (ноль), который интерпретируется как false и в таблицу не записывается, а надо.
Вторая: хотелось бы не выводить разделитель "New supply", если массив @c пустой.

Заранее спасибо.
На самом деле всё очень просто...
Спасибо сказали:
Аватара пользователя
VarLog
Сообщения: 311
ОС: openSUSE 12.2

Re: perl: format

Сообщение VarLog »

Проблему с "New supply" решил, но не самым элегантным образом:

Код: Выделить всё

my $ns_flag = '----------';
if(...) {
  $ns_flag =  'New supply';
  ...
}
format ...
|------@|||||||||--------------------------------------------------------------------------------------------------|
        $ns_flag
...

На самом деле всё очень просто...
Спасибо сказали: