my @arrayA; my @arrayB; while (...) { @arrayB = ...; push(@arrayA, \@arrayB); # XXX } #### my @arrayA; my @arrayB; while (...) { @arrayB = ...; push(@arrayA, [ @arrayB ]); # Ok } #### my @arrayA; while (...) { my @arrayB = ...; push(@arrayA, \@arrayB); # Ok } #### my @arrayA; while (...) { my @arrayB = ...; push(@arrayA, [ @arrayB ]); # Needlessly creating 3rd array. }