在Perl中取消引用数组

时间:2013-06-06 19:32:52

标签: perl

考虑:

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

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

我对这个声明感到有点困惑。我知道$是标量变量,@是Perl中的数组变量。

  1. 为什么不是my (@array, $word) = @_;
  2. {$ 1}}可以访问$ array中的数组($是否为标量?)?

1 个答案:

答案 0 :(得分:4)

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

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

@array将吞噬所有输入,$word将保持未定义。

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

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

但那不是你拥有的。

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