>perl -wMstrict -le "my @a_refs = ([1], 2, [3, 4], [5, [6, [7, 8]]], 9); ;; sub flatten { map { 'ARRAY' eq ref() ? flatten(@$_) : $_ } @_ } ;; my @flattened = flatten(@a_refs); use Data::Dumper; print Dumper \@flattened; " $VAR1 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];