我所拥有的一段历史Perl代码具有以下功能:
sub binds { join(",", ("?")x$_[0]) }
稍后使用binds(4)
等进行调用。据我所知,它正在加入?
和,
,但我对于究竟如何,我对x$_[0]
部分的理解感到迷茫。
答案 0 :(得分:10)
此函数采用整数(假设n
)作为其第一个参数,并返回由逗号分隔的n
个问号字符串。以下是它如何分解:
sub binds {
join(",", ("?") x $_[0]);
# │ │ └──── the first argument to the subroutine.
# │ └── the repetition operator (think multiply).
# └─── a list containing only the string literal "?".
}
binds(4) # => "?,?,?,?"
它可能是数据库接口的实用程序函数,用于创建指定数量的?
占位符,这些占位符稍后将作为SQL语句的一部分绑定到某些特定值。
答案 1 :(得分:3)
让我们问一下Perl关于如何解析它的意见。
$ perl -MO=Deparse -e'sub binds { join(",", ("?")x$_[0]) }'
sub binds {
join ',', ('?') x $_[0];
}
-e syntax OK
添加一些空格后,部分变得清晰。
答案 2 :(得分:1)
此代码生成一个由逗号分隔的问号列表,可能会在DBI应用程序中生成参数绑定点。
$ _ [0]是绑定数,绑定(4)会返回“?,?,?,?”。