在perl中,我试图在两个不同的列中打印ENV变量及其值,但它不起作用

时间:2017-04-30 01:45:41

标签: perl

my $longest=0;

foreach my $key ( keys %ENV ) {
my $key_length = length( $key );
$longest = $key_length if $key_length > $longest;
}
foreach my $key ( sort keys %ENV ) {
printf "%-${longest}s %s\n", $key, $ENV{$key};

这会在两个单独的列中打印ENV变量名称和值; 但ENV值很长,环绕:(

关于如何确保第二列不包围第一列空间的任何指示?

输出我

xyz  123
abc  456,
789

期望的输出

xyz  123
abc  456,
     789

1 个答案:

答案 0 :(得分:3)

use Text::Wrap qw( wrap );

# local $Text::Wrap::columns = ...;  # Default = 76

my $indent = " " x ($longest + 1);

for my $key ( sort keys %ENV ) {
   printf("%-${longest}s %s\n", $key, wrap("", $indent, $ENV{$key}));
}

或者,可以使用Perl6::Form(提供Perl6样式表单的Perl5模块)。