#! /usr/local/bin/perl
sub getClusters
{
my @clusters = `/qbo/bin/getclusters|grep -v 'qboc33'`;
chomp(@clusters);
return \@clusters;
}
嗯,好吧..我如何在这个数组上打印,因为......
foreach $cluster (getClusters())
{ print $cluster."\n"; }
似乎不起作用。谢谢。
#! /usr/local/bin/perl
sub getClusters
{
my @clusters = `/qbo/bin/getclusters|grep -v 'qboc33'`;
chomp(@clusters);
return \@clusters;
}
嗯,好吧..我如何在这个数组上打印,因为......
foreach $cluster (getClusters())
{ print $cluster."\n"; }
似乎不起作用。谢谢。
您正在返回一个引用,而不是在任何地方取消引用它。
foreach $cluster (@{getClusters()})
或者
return @clusters;
任何一个都应该修复它(效果略有不同),首选第一个(你的数组有点大)。
您可以将非引用数组返回用于有限数量的元素,通常是为了多返回(因此,通常限制为 2 或 3 个已知长度的数组)。
如果您在 下运行程序use strict; use warnings;
,它会告诉您失败的原因。正如 Amadan 所说,您需要取消引用您返回的引用。
#!/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
用于调试的循环,您可以重置$"
操作符,但是可以根据您的喜好分隔数组元素(例如,
, ,
,或者我在上面的代码中如何设置它\n
)。``
为方便起见,您可以先接收返回值,然后像这样打印
use strict;
use warning;
my $cluster_array = getClusters();
my @cluster_return = @{$cluster_array};
foreach my $cluster(@cluster_return){
print"$cluster\n";
}