return 语句上的 perl 引用和取消引用

perl reference and dereference on return statement

我正在学习 perl,遇到与参考文献相关的问题。 我正在处理函数 get_id.

如果我return$self->{_id},我会得到两个不能运行的数组地址(c).

据我了解,$a 是引用,@{$a} 是数组,@{$a}[0] 会 return 值 0 吗?

这是我第一次post关于Whosebug的问题,因此解释可能不够清楚,抱歉。

@a1 = [0]  
@a2 = [1]

my self{   
  _id = [\@a1,\@a2]; }   //given
  
sub get_id(){
   my $self      = shift;
   return  $self->{_id};
}

sub print{
    
...

   my $a = $obj -> get_id();

   my $b = @{$a}[0] * 100;    // c  (given)

..
} 

$arr是对数组的引用时,@$arr@{ $arr }是它所引用的数组。数组的第一个(或第零个)元素是 $arr->[0](或 $$arr[0],但箭头符号更常见)。

以下

my @arr = [0];

创建一个包含单个元素的数组,该元素是一个数组引用。要获得 0,您需要做

$arr[0]->[0]

可以缩短为

$arr[0][0]

要创建一个以 0 作为单个元素的数组,请使用

my @arr = (0);

顺便说一句,不要使用 $a$b,它们是 sort. Lexicalising them with my 中使用的特殊变量,会导致难以调试的错误。