#! /usr/local/bin/perl
sub getClusters
{
my @clusters = `/qbo/bin/getclusters|grep -v 'qboc33'`;
chomp(@clusters);
return \@clusters;
}
嗯,好吧..我怎么得到这个阵列打印,因为......
foreach $cluster (getClusters())
{ print $cluster."\n"; }
似乎不起作用。 感谢。
答案 0 :(得分:5)
您正在返回引用,而不是在任何地方取消引用它。
foreach $cluster (@{getClusters()})
OR
return @clusters;
要么修复它(效果略有不同),第一个是首选(你的数组有点大)。
对于有限数量的元素,您将使用非引用数组返回,通常用于多次返回(因此,通常,限制为2或3个已知长度数组)。
答案 1 :(得分:1)
如果您在use strict; use warnings;
下运行程序,它会告诉您失败的原因。正如Amadan所说,你需要取消引用你返回的参考文献。
答案 2 :(得分:1)
#!/usr/local/bin/perl
use strict;
use warnings;
main();
sub main{
{
local $" = "\n";
print "@{getClusters()}";
}
}
sub getClusters{
my @tArray = `/qbo/bin/getclusters|grep -v 'qboc33'`;
chomp @tArray;
return \@tArray;
}
foreach
循环进行调试,您可以重置$"
运算符,但要分开您喜欢的数组元素(例如
,{{1} },或者我如何在,
上面的代码中设置它。 \n
答案 3 :(得分:0)
为方便起见,您可以先收到返回值,然后将其打印为
use strict;
use warning;
my $cluster_array = getClusters();
my @cluster_return = @{$cluster_array};
foreach my $cluster(@cluster_return){
print"$cluster\n";
}