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,我仍然只得到输出的第一部分。我不知道为什么它没有打印所有的值…请显示您的完整代码。您遗漏了导致问题的部分