考虑以下示例代码。
my $a = "test";
my $b = "stackoverflow";
test("%s - %s\n", $a, $b);
sub test {
my $error = sprintf(@_);
print $error;
}
这会打印 3 而不是格式化的字符串。是否有可能做我正在尝试的事情?
最佳答案
正如 VGE 所建议的,是原型(prototype)导致了问题,但您需要使用 shift
,而不是 pop
:
sub test {
my $error = sprintf(shift, @_);
print $error;
}
sprintf
在标量上下文中计算它的第一个参数。如果那是一个数组,你会得到数组的长度。
关于perl - 是否可以将 sprintf 类型参数传递给 Perl 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552788/