考虑:
sub binary_search {
my ($array, $word) = @_;
my ($low, $high) = (0, @$array -1);
}
我正在阅读一本书,本书提供的@$array
解释是它取消引用标量变量$array
以获取下面的数组。
我对这个声明感到有点困惑。我知道$是标量变量,@是Perl中的数组变量。
my (@array, $word) = @_;
?$
是否为标量?)?答案 0 :(得分:4)
该函数需要将引用作为第一个参数,而不是数组。有关数组引用的信息,请参阅perlreftut。如果你试图评估:
my (@array, $word) = @_;
@array
将吞噬所有输入,$word
将保持未定义。
可以编写该方法以期望一个单词然后一个数组,在这种情况下你可以这样做:
my ($word, @array) = @_;
但那不是你拥有的。
请注意,当您在实际参数列表中调用具有数组的函数时,Perl所做的是插入数组的元素,就好像它们是函数的单个参数一样。它不会将数组作为单个对象传递。有关详细信息,请参阅perlsub文档。