我正在尝试以表格格式打印输出。
我的剧本:
use strict;
my @heading=("FN","SN","BP","SUBBN","LgcBT");
my @values=("1","0","Front","Mother Board","MIU");
print "\n\n";
&HEADING;
print "\n";
&VALUES;
print "\n\n";
sub HEADING {
foreach (@heading) {
my $lgth1=length($_);
printf "%3s","| ";
printf "%${lgth1}s",$_;
}
}
sub VALUES {
foreach (@values) {
my $lgth2=length($_);
printf "%3s","| ";
printf "%${lgth2}s",$_;
}
}
输出:
| FN | SN | BP | **SUBBN** | LgcBT
| 1 | 0 | Front | **Mother Board** | MIU
我需要打印输出,如果值比标题长,那么它会自动将标题长度调整为值。
答案 0 :(得分:6)
听起来你应该只使用Data::Format::Pretty::Console
答案 1 :(得分:4)
“漂亮打印”文本表有许多模块;我最喜欢的是Text::ASCIITable。
答案 2 :(得分:0)
这样做的方法是提前生成一个长度数组:
my @lengths;
for (0..$#lengths) {
$lengths[$_] = (length($headers[$_]) > length($values[$_])) ? length($headers[$_]) : length($values[$_])
}
当然,有更好的方法来生成更多Perl-ish的@lengths
,但恕我直言这个例子是最容易阅读的。