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
...
我忘了提到:文本应该有一个开放的结尾,因为文本行的右端应该对应于终端的大小。
我如何更改脚本以达到目标?
答案 0 :(得分:5)
您可以使用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 );
答案 1 :(得分:3)
试试这个,
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;
答案 2 :(得分:0)
虽然我不确定你的问题究竟是你希望输出的格式,但我可以告诉你,Perl语言中输出相当的关键是使用格式。
如何使用它们来实现您想要的任何输出格式 Perl format primer 。
答案 3 :(得分:0)
#!/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 );