可以这样写:
或者绕一些,为了接近口语描述: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
[Finished in 0.6s]B B B B T B B B T B B T B T