Perl将printf输出附加到字符串

use*_*717 5 perl

我正在解析一些数据并组织它,现在我需要在变量中捕获它.

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

我以这样的方式使用printf来组织数据:

printf("%-30s %18s %18s\n", "$a", "$b", "$c\n");
Run Code Online (Sandbox Code Playgroud)

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

我试过类似的东西

$result.printf("%-30s %18s %18s\n", "$a", "$b", "$c\n");
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

谢谢,S

ike*_*ami 8

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

要连接两个字符串(一个到另一个),一个使用.运算符(或join)

$result . sprintf(...)
Run Code Online (Sandbox Code Playgroud)

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

$result = $result . sprintf(...);
Run Code Online (Sandbox Code Playgroud)

或者更短

$result .= sprintf(...);
Run Code Online (Sandbox Code Playgroud)


TLP*_*TLP 2

不知道“也尝试过 sprintf”是什么意思,因为如果你做得正确的话,它没有理由不起作用。虽然你展示的语法看起来不太像 perl,而更像 python 或 ruby​​?

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