首页 > 解决方案 > 在 foreach 循环外打印数组

问题描述

基本上我只想打印整个数组......当我在 foreach 循环内完成它时,它打印得很好 - 整个数组。但是当我尝试在 foreach 循环之外执行此操作时,它只打印数组的最后一个元素。

预期:000001066

结果:066

有什么建议么?提前致谢。

my $var;
foreach (@rows) {
    (my $dump = $_->{WA}) =~ s/\s+$//;
    ($shortdump->{MANDT},$shortdump->{CCCATEGORY},$shortdump->{CCCORACTIV},$shortdump->{CCNOCLIIND}) =
        map { s/^\s+//; s/\s+$//; $_ } split(";", $dump);
    my @array = split('', $shortdump->{MANDT}, length($shortdump->{MANDT}));
    $var = join "", @array;
    print @array; #THIS WILL PRINT NORMALLY
}
print "Array: $var"; #PRINT ONLY LAST ELEMENT, NOT WHOLE ARRAY

标签: arraysperlsortingscopeprintf

解决方案


要打印出整个数组,您必须累积这些值。

所以而不是使用

$var = join "", @array;

你应该使用

$var = $var . join "", @array;

或快捷方式:

$var .= join "", @array;

推荐阅读