-1

考虑:

sub binary_search {
   my ($array, $word) = @_;
   my ($low, $high) = (0, @$array -1);
}

我正在阅读一本书,这本书的解释@$array是它取消引用标量变量$array以获取下面的数组。

我对这个说法有点困惑。我知道 $ 是一个标量变量,@ 是 Perl 中的一个数组变量。

  1. 为什么不是my (@array, $word) = @_;
  2. $array 中如何有一个数组(不是$标量?)可以通过@$array
4

1 回答 1

4

该函数需要一个对数组的引用,而不是数组,作为第一个参数。有关数组引用的信息,请参阅perlreftut。如果您尝试评估:

my (@array, $word) = @_;

@array吞噬所有的输入,并且$word不会被定义。

可以编写该方法以期望一个单词,然后是一个数组,在这种情况下,您可以这样做:

my ($word, @array) = @_;

但这不是你所拥有的。

请注意,当您使用实际参数列表中的数组调用函数时,Perl 所做的就是插入数组的元素,就好像它们是函数的单独参数一样。它不会将数组作为单个对象传递。有关详细信息,请参阅perlsub文档。

于 2013-06-06T19:34:51.453 回答