perl - 是否可以将 sprintf 类型参数传递给 Perl 函数?

标签 perl

考虑以下示例代码。

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/

相关文章:

regex - 我们如何通过在 PERL 中使用正则表达式来消除未排序的逗号分隔列表中的重复项

java - Java 中的 Pack h* 等效项

mysql - 如何在带有变量的mysql perl中创建子例程

perl - 什么脚本可以帮助解析一组错误换行的行?

regex - 可以使用 Perl 的 grep 和正则表达式返回捕获

database - Bucardo 添加同步以复制数据

perl - 如果 AUTOLOAD 失败,则传递错误消息

perl - 像自动死亡一样死去

arrays - Perl 中插入数组的差异

perl - 相当于 Perl 中的 >nul 2>&1 (来自 Batch)?