我正在解析一些数据并对其进行组织,现在我需要在变量中捕获它。
在此之前我从未使用过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
答案 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;