Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 从perl中的子例程返回数组并在另一个子例程中使用_Arrays_Perl_Reference_Subroutine - Fatal编程技术网

Arrays 从perl中的子例程返回数组并在另一个子例程中使用

Arrays 从perl中的子例程返回数组并在另一个子例程中使用,arrays,perl,reference,subroutine,Arrays,Perl,Reference,Subroutine,嗨,我正在努力学习Perl。我在创建数组并在另一个子例程中使用引用时遇到问题 示例代码: #!/usr/bin/perl use strict; use warnings; sub test { my @a = ("a","b","c"); return \@a; } # code just for test, the reference would just be used in next subroutine my $array = test(); my @arr =

嗨,我正在努力学习Perl。我在创建数组并在另一个子例程中使用引用时遇到问题

示例代码:

#!/usr/bin/perl

use strict;
use warnings;

sub test {

  my @a = ("a","b","c");

  return \@a;
}

# code just for test, the reference would just be used in next subroutine
my $array = test();
my @arr   = @array;

print "@arr\n"; # just for test

test2(@arr);

sub test2 {

  my @array1 = @_;

  foreach $values (@array1) {
    # do things
  }
}
重点是使用第二个子系统中第一个子系统的数组

-----------------V2-------------------------

#!/usr/bin/perl

    use strict;
    use warnings;
    test();
    sub test {

      my @a = ("a","b","c");

      return \@a;
    }

    print "\@a\n";

    test2(\@a);

    sub test2 { (my $array1) = @_;
      foreach my $values (@array1) {
        print "$values\n";
      }
    }

@array
$array
是完全不同的变量。要取消引用
$array
,请使用
@$array
(请参阅)

将引用传递给test2会更有效,因此:

test2($array);
sub test2 {
    my ($array1) = @_;
    foreach $values (@$array1) {

my@=
是一个语法错误。您包含语法错误
my@=
的事实表明您没有粘贴到您测试的实际代码中。这意味着在你的问题上我们不能相信其他任何东西。看起来问题在于
@array
$array
之间的混淆-但这可能只是一个打字错误。要求我们调试您甚至还没有运行的代码是不礼貌的。在进一步调查中,我注意到此代码也无法运行,因为您有
使用strict
,但您没有声明
@array
。因此,运行此程序将导致致命错误。在这一点上,你似乎并不真的关心这个问题的解决方案,而我正继续帮助其他人。对不起,戴夫,只是一个打字错误。在没有GUI的虚拟机上运行代码,这样就可以复制过去。我不确定我是否理解正确。我在第一个下发布了一个新的尝试。