Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 子系统接收到数组ref时为空_Perl_Arrayref - Fatal编程技术网

Perl 子系统接收到数组ref时为空

Perl 子系统接收到数组ref时为空,perl,arrayref,Perl,Arrayref,我正在尝试通过引用访问数组的元素,将引用传递到sub。以下是我的代码片段: my @arr1 = (1,2); my @arr2 = (3,4); my @arr3; push @arr3, \@arr1; push @arr3, \@arr2; for my $i (@arr3) { print "$i\n"; } print "Entered Sub func()\n"; for my $i (@arr3) { func($i); } sub func{ my $pa

我正在尝试通过引用访问数组的元素,将引用传递到sub。以下是我的代码片段:

my @arr1 = (1,2);
my @arr2 = (3,4);
my @arr3;

push @arr3, \@arr1;
push @arr3, \@arr2;

for my $i (@arr3) {
  print "$i\n";
}

print "Entered Sub func()\n";

for my $i (@arr3) { 
  func($i);
}

sub func{
  my $par = shift;
  print $par."\n";
}
print "------------------------\n";

for my $elem(@$par) {
  print $elem."\n";
}
以下是输出:

C:\Users\ag194y>perl arrs.pl
ARRAY(0x357b28)
ARRAY(0x3575e8)
Entered Sub func()
ARRAY(0x357b28)
ARRAY(0x3575e8)
------------------------

C:\Users\ag194y>

我希望访问@arr1和a@rr2在子循环中使用for循环,但看起来数组引用为空。我做错了什么?非常感谢。

我认为问题在于,循环超出了函数的范围。您要调用func两次,然后才循环使用$par,这在当时是未定义的

您可能正在寻找以下内容:

sub func{
  my $par = shift;

  print $par."\n";
  print "------------------------\n";

  for my $elem (@$par){
    print $elem."\n";
  }
}

您的sub中没有for循环。如果您使用了use strict;使用警告;,perl会告诉你的。事实上,总是使用strict;使用警告qw all;!我们最近看到的所有格式错误的代码是什么?我已经给你修好了,不过下次请你自己修。