Как я могу создать столбчатый вывод в Perl? - PullRequest
5 голосов
/ 20 марта 2010

! / Usr / bin / env perl

 use warnings;
 use strict;

 my $text = 'hello ' x 30;

 printf "%-20s : %s\n", 'very important text', $text;

Вывод этого скрипта выглядит примерно так:

very important text      : hello hello hello  hello
hello hello hello hello hello hello hello hello
hello hello hello hello hello hello hello hello
...

Но я бы хотел получить такой вывод:

very important text: hello hello hello hello
                     hello hello hello hello
                     hello hello hello hello
                     ...

Я забыл упомянуть: текст должен иметь открытый конец в том смысле, что правый конец текстовых строк должен совпадать с размером терминала.

Как я мог изменить свой сценарий, чтобы достичь своей цели?

Ответы [ 4 ]

5 голосов
/ 20 марта 2010

Вы можете использовать Text :: Wrap :

use strict;
use Text::Wrap;

my $text = "hello " x 30;
my $init = ' ' x 20;
$Text::Wrap::columns = 80;

print wrap ( '', $init,  'very important text : ' . $text );
3 голосов
/ 20 марта 2010

Попробуйте это,

use strict;
use warnings;

 my $text = 'hello ' x 30;

 $text=~s/((\b.+?\b){8})/$1\n                       /gs;
 printf "%-20s : %s\n", 'very important text', $text;
0 голосов
/ 20 марта 2010
#!/usr/bin/env perl
use warnings; 
use strict;
use 5.010;
use Text::Wrap;
use Term::Size;

my $text = 'hello ' x 30;
my $init = ' ' x 22;
my( $columns, $rows ) = Term::Size::chars *STDOUT{IO};
$Text::Wrap::columns = $columns;

say wrap ( '', $init,  'very important text : ' . $text );
0 голосов
/ 20 марта 2010

Хотя из вашего вопроса я не уверен точно, в каком формате вы хотели бы получить вывод, я могу сказать, что ключ к хорошему выводу на языке Perl - использование форматов.

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

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