返回语句的perl引用和取消引用

返回语句的perl引用和取消引用,perl,reference,Perl,Reference,我正在学习perl,遇到了一个与引用相关的问题。 我正在处理函数get_id 如果我返回$self->{u id},我将得到两个无法运行的数组地址(c) 在我的理解中,$a是引用,@{$a}是数组,@{$a}[0]将返回值0 这是我第一次发布关于stackoverflow的问题,因此解释可能不够清楚,对此表示抱歉 @a1 = [0] @a2 = [1] my self{ _id = [\@a1,\@a2]; } //given sub get_id(){ my $

我正在学习perl,遇到了一个与引用相关的问题。 我正在处理函数get_id

如果我返回
$self->{u id}
,我将得到两个无法运行的数组地址(c)

在我的理解中,
$a
是引用,
@{$a}
是数组,
@{$a}[0]
将返回值0

这是我第一次发布关于stackoverflow的问题,因此解释可能不够清楚,对此表示抱歉

@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
,它们是中使用的特殊变量。将它们用字典化可能会导致难以调试的bug。

代码的第一句话实际上是
@a1=[0]@a2=[1]我的自我{…}
。如果你试着运行它,会产生一大堆错误,因为你的行不会以分号结尾
/
是Perl中的运算符,而不是注释<代码>我的自我{…}不是有效的语句。您不应该发布您没有实际运行的代码,因为这只会浪费时间。你发布的代码应该是可运行的,并且应该能够证明你的问题;使用警告