我有以下格式的输入:
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
放到一个数组中.然后使用函数找到字符数最长的函数.最后,我会填写较短的名称以匹配最长的名称.有没有更好,更有效的方法来做到这一点?
我想知道如何在X个字符后添加换行符(即/n
或<br>
).
例如,假设我有一个perl变量$ message ="aaaaabbbbbcccccdd".我想在每5个字符后添加一个换行符到这个变量.因此,当我在html中打印变量时,它将显示:
aaaaa
bbbbb
ccccc
dd
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?有人告诉我使用substr或count函数,但我不知道如何去做.任何帮助将不胜感激.谢谢!
如何从每行具有IP地址的文本文件中提取IP地址?我想提取IP,然后在单独的文件中列出IP地址.包含IP的文本文件采用以下格式:
主机somehost.com(192.168.1.1)启动(延迟0.20秒).
主机10.1.0.0启动(延迟0.21秒).
主机172.1.0.0启动(延迟0.21秒).
我正在尝试将生成的文本文件输出如下:
192.168.1.1
10.1.0.0
172.1.0.0
使用Perl执行此操作的最佳方法是什么?
注意:它不需要考虑有效IP的正则表达式......只需采用上述格式的IP即可.
谢谢!
我遇到了一些问题.最初,我有以下格式输入:
12345 apple
12 orange
Run Code Online (Sandbox Code Playgroud)
我将第一列保存为$ num,将第二列保存为$ fruit.我希望输出看起来像这样(见下文).我希望输出对齐,就像$ num的长度一样.实际上,$ num将包含可变长度的数字.
12345 apple
12 orange
Run Code Online (Sandbox Code Playgroud)
如建议的那样,我使用以下代码:
$line = sprintf "%--10s %-20s", $num, $fruit;
Run Code Online (Sandbox Code Playgroud)
此解决方案在命令行显示方面效果很好,但是当我尝试通过HTML显示此格式时,不会保留此格式.例如..
print "<html><head></head><body>
$line
</body></html>";
Run Code Online (Sandbox Code Playgroud)
这会在格式化之前产生与原始相同的输出.你们有一个关于如何在html基于网络的显示中保留sprintf格式的建议吗?我尝试使用空格填充$ num,但以下代码似乎对我不起作用.
$num .= (" " x (10 - length($num)));
Run Code Online (Sandbox Code Playgroud)
无论如何,我将不胜感激任何建议.谢谢!