Perl格式(iesprintf)未在html显示中保留

qdo*_*dog 2 html fixed-width

我遇到了一些问题.最初,我有以下格式输入:

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)

无论如何,我将不胜感激任何建议.谢谢!

fri*_*edo 11

HTML忽略了额外的空格.事实上它可能显示比例字体意味着即使有额外的空格也不会排队.

简单的选择是用<pre>标签包围文本,默认情况下会显示一个等宽字体并保留空格.或者,您可以让代码生成HTML表.