询问Perl中printf的预留空白数是否可以控制?

xjacks 2009-03-12 03:10:25
最近初学Perl,碰到一个棘手的问题。现在有一数据文本是下边这样的内容:

……
Name:XXXX
Password:XXXXXXX
Name:YYYYY
Password:YYYYYYYYYY
……

想把内容转换为下边这样的格式:
(Name左对齐,Password右对齐,中间用空格间隔)

Name Password
------ -----------
XXXX XXXXXXX
YYYYY YYYYYYYYYY
……

碰到一个问题,就是Name和Password的长度都是不确定的,虽然遍历一遍数据源,可以找到长度的最大值,但是在用printf进行格式化输出的时候,预留空白得使用“%8s” 这样的格式符,里边的“8”现在得用找到的长度最大值,可最大值是放在变量里(例如$len),如果直接把$len放到格式符里无法正常运行。不知道这种情况该怎么办?是否有别的办法或者别的函数能解决?希望大家不吝赐教,谢谢!
...全文
414 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltake 2009-12-03
  • 打赏
  • 举报
回复
.......................
xjacks 2009-03-12
  • 打赏
  • 举报
回复
啊,原来要用大括号括起来,和shell一样。刚刚我只试了用小括号,完全忘了大括号……感谢iambic!
iambic 2009-03-12
  • 打赏
  • 举报
回复
>如果直接把$len放到格式符里无法正常运行。
怎么会不能运行?
my $len = 8;
printf "%-${len}s%s", "Name", "Password";

输出:
Name Password

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧