my @flattened_array = flatten($nested_array_ref); sub flatten { my $array = shift; my @results = (); foreach my $element ( @$array ) { if( ref $element eq 'ARRAY' ) { push @results, flatten($element); } elsif( $element ) { push @results, $element; } } return @results; }