my @array = ( [ '', '' ], [ '', '' ], [ 'funct1', '', '' ], [ '', '' ], [ '', [ '', [ 'funct2a', 'funct2b', '' ], '' ], '' ], 'funct3', 'funct4', 'funct5', 'funct6', 'funct7', ); print join "\n", _flatten( @array ), "\n"; { my @results; sub _flatten { foreach (@_) { if (ref $_ eq 'ARRAY') { _flatten( @{ $_ } ); next; } push @results, $_ if $_; } return @results; } }