Perl将printf输出附加到字符串

时间:2013-03-18 22:25:12

标签: perl

我正在解析一些数据并对其进行组织,现在我需要在变量中捕获它。

在此之前我从未使用过printf或sprintf。

我正在以这种方式使用printf来组织数据:

printf("%-30s %18s %18s\n", "$a", "$b", "$c\n");

现在我有一个存储字符串的变量,我想将有组织的数据附加到变量$ result。

我试过像

这样的东西
$result.printf("%-30s %18s %18s\n", "$a", "$b", "$c\n");

它不起作用。我也试过sprintf。

有什么想法吗?

谢谢,S

2 个答案:

答案 0 :(得分:8)

printf将构造的字符串输出到指定的句柄(如果省略则输出当前的默认值)并返回一个布尔值,指示是否发生IO错误。没有用。 sprintf返回构造的字符串,所以你想要这个。

要连接两个字符串(相互追加),一个使用.运算符(或join

$result . sprintf(...)

但你说这不起作用。据推测,这是因为您还希望将生成的字符串存储在$result中,您可以使用

$result = $result . sprintf(...);

或更短的

$result .= sprintf(...);

答案 1 :(得分:1)

不知道你的意思是“尝试过sprintf”,因为如果你做得对,没有理由不行。虽然你展示的语法看起来不像perl,更像是python或ruby?

my $foo = sprintf("%-30s %18s %18s\n", "$a", "$b", "$c\n");
$result .= $foo;