[perl][文本处理]追加列元素并自动对齐

There's more than one way to do it!
https://metacpan.org http://perlmonks.org
头像
523066680
Administrator
Administrator
帖子: 357
注册时间: 2016年07月19日 12:14
拥有现金: 锁定
储蓄: 锁定
Has thanked: 32 times
Been thanked: 32 times
联系:

[perl][文本处理]追加列元素并自动对齐

帖子 #1 523066680 » 2017年10月19日 18:31

(没有话题也要水一个)

可以这样写:

use List::Util qw/max/;
my $newstr = "T";
my @lines = <DATA>;
my $maxlen = max map { $_=~s/\r?\n$//;length($_) } @lines;
grep { printf "%-${maxlen}s %s\n", $_, $newstr } @lines;

__DATA__
B B B B
B B B
B B
B


或者绕一些,为了接近口语描述:

use List::Util qw/max/;

sub get_each_line { (<DATA>) }
sub get_each_len_of { map { $_=~s/\r?\n$//; length($_) } @_ }
sub print_each_of { grep { printf "%-${_[2]}s %s\n", $_, $_[4] } @{$_[0]}; }

$newstr = "T";
my @lines = get_each_line;
my $max = max get_each_len_of @lines;
print_each_of \@lines, set_length => $max, append => $newstr;

__DATA__
B B B B
B B B
B B
B


B B B B T
B B B T
B B T
B T
[Finished in 0.6s]

回到 “Perl”

在线用户

用户浏览此论坛: 没有注册用户 和 0 访客