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
答案 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模块)。