Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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 从子例程调用多个数组_Perl - Fatal编程技术网

Perl 从子例程调用多个数组

Perl 从子例程调用多个数组,perl,Perl,当我从子程序调用数组时,我只能打印第一部分。 在子例程中,我能够打印所有记录,但当我在脚本顶部调用同一数组时,我只能得到低于输出的结果 @array = test(); DEBUG(Dumper(\@array); 2014/07/04 1:28:38 $VAR1 = [ [ 'Router1', 'Router2', 'Router3', ] ]; sub t

当我从子程序调用数组时,我只能打印第一部分。 在子例程中,我能够打印所有记录,但当我在脚本顶部调用同一数组时,我只能得到低于输出的结果

@array = test();
DEBUG(Dumper(\@array);

2014/07/04 1:28:38 $VAR1 = [
          [
            'Router1',
            'Router2',
            'Router3',
          ]
        ];



sub test {      
    my @array;    
    for my $record (@array) {
        for my $value (@$record) {
            DEBUG("DEBUG: Value of array $value ");
        }
    }
    return (@array);
}
转储程序输出如下所示:

2014/07/04 1:28:38 $VAR1 = [
          [
            'Router1',
            'Router2',
            'Router3',
          ]
        ];
2014/07/04 1:28:38 $VAR1 = [
          [
            'Switch1',
            'Switch2',
            'Switch3',
          ]
        ];

2014/07/04 1:28:38 $VAR1 = [
          [
            'Switch11',
            'Switch21',
            'Switch31',
          ]
        ];
预期产出:

Router1
Router2
Router3
Switch1
Switch2
Switch3
Switch11
Switch21
Switch31

谢谢。

您的子例程
test
声明一个空数组
@array
并转储它。您将不会得到输出,因为它是空的。您在程序开始时转储的数组是另一个数组

不适用于我..任何其他方式…$array=&test();调试(转储程序($array));我得到$VAR1=undef;我将返回值从@array更改为\@array;但我还是像以前一样只得到了第一组。请任何人帮助……您显示的代码将无法编译。我假设您实际上有
DEBUG(转储程序(\@array))?感谢您的回复。是的,我已经从子程序中删除了我的@array,我仍然只得到输出的第一部分。我不知道为什么它没有打印所有的值…请显示您的完整代码。您遗漏了导致问题的部分