我有以下格式的输入:
09:08:11 XXXXXXXXXXXXX 1.1.1.1
09:09:03 YYYYYYYY 2.2.2.2
09:12:37 ZZZZ 3.3.3.3
Run Code Online (Sandbox Code Playgroud)
我可以使用正则表达式轻松提取这些个人字段/(\S+)\s+(\S+)\s+(\S+)\s+/.我叫他们$time,$name和$number.我的问题是我想显示这个以便$number完美对齐.因为它$name可以是任何长度,对此最好的解决方案是什么?
我希望输出看起来像这样.请注意,我必须使用点来对齐最后一个字段,因为我无法使用空格键来执行此操作,不确定原因.安美居.
09:08:11 XXXXXXXXXXXXX 1.1.1.1
09:09:03 YYYYYYYY 2.2.2.2
09:12:37 ZZZZ 3.3.3.3
Run Code Online (Sandbox Code Playgroud)
我想把它$name放到一个数组中.然后使用函数找到字符数最长的函数.最后,我会填写较短的名称以匹配最长的名称.有没有更好,更有效的方法来做到这一点?
Jim*_*son 21
对于格式化,请尝试使用sprintf函数,如
$line = sprintf "%-12s %-20s %-s\n", $time, $name, $number;
Run Code Online (Sandbox Code Playgroud)
(减号表示左对齐)
这是这里有人给的:
my($name, $telephone, $stime);
format Infos =
@<<<<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<
$name, $telephone, $stime
.
$~ = 'Infos';
($name, $telephone, $stime) = ('Name:', 'Telephone:', 'Start Time:');
write;
($name, $telephone, $stime) = ('Mike Bax', 'tel-41596', 'Fri 8/22 13:31');
write;
Run Code Online (Sandbox Code Playgroud)
您可以更改变量名称,它应该适合您。
| 归档时间: |
|
| 查看次数: |
22276 次 |
| 最近记录: |