конвейер отчетов Perl с разделителями - PullRequest
1 голос
/ 07 февраля 2012

Я делаю отчет с разделителями конвейера, используя perl.Как включить разделительный символ |между полями.|Символ в Perl означает выравнивание поля по центру.

format details =
@<<<<<<<<<<<<  @<<<<<<<<<<<<<<<<<<<<<<<  @<<<<<<<<<<<<
"$rtype", "$rdescr", "$rid"

OUTFILE->format_name("details");
write OUTFILE;

1 Ответ

4 голосов
/ 07 февраля 2012

Если вы используете этот формат, то вы можете просто использовать:

print OUTFILE "$rtype|$rdescr|$rid\n";

Вам следует подумать о переходе на лексические дескрипторы файлов , хотя в ISTR для форматов требуются нелексические дескрипторы .Однако это не приводит к автоматическому усечению полей до длины, которая может иметь для вас значение.

Этот код работает для меня:

#!/usr/bin/env perl
use strict;
use warnings;

open OUTFILE, ">", "file.out" or die "A horrible death";

my $rtype = "ABCDEFG HIJKLMN OPQRST";
my $rdescr = "Abc def ghi jkl mno pqr stuv wxyz?";
my $rid   = "0123456789";

format details =
@<<<<<<<<<<<< | @<<<<<<<<<<<<<<<<<<<<<<< | @<<<<<<<<<<<< |
"$rtype", "$rdescr", "$rid"
.

OUTFILE->format_name("details");
write OUTFILE;


$rtype = "ABCDEFG";
$rdescr = "Abc def";
$rid   = "01234";
write OUTFILE;

Вывод, который он выдает (в file.out)is:

ABCDEFG HIJKL | Abc def ghi jkl mno pqr  | 0123456789    |
ABCDEFG       | Abc def                  | 01234         |

(PS: сначала я попытался \|; в выводе он выдал \|, поэтому было легко и разумно сделать вывод, что обратный слеш на самом деле не нужен).

С лексическим дескриптором файла:

#!/usr/bin/env perl
use strict;
use warnings;

open my $out, ">", "file.out" or die "A horrible death";

my $rtype = "ABCDEFG HIJKLMN OPQRST";
my $rdescr = "Abc def ghi jkl mno pqr stuv wxyz?";
my $rid   = "0123456789";

format details =
@<<<<<<<<<<<< | @<<<<<<<<<<<<<<<<<<<<<<< | @<<<<<<<<<<<< |
"$rtype", "$rdescr", "$rid"
.

$out->format_name("details");
write $out;


$rtype = "ABCDEFG";
$rdescr = "Abc def";
$rid   = "01234";
write $out;

Это дает тот же вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...