This calls for recursion.
#!/usr/bin/perl use warnings; use strict; use List::Util qw{ any }; sub flatten { my ($struct) = @_; if (ref [] eq ref $struct) { return map flatten($_), @$struct } elsif (ref \\"" eq ref $struct) { return $$struct } else { return \$struct } } use Test::More tests => 2; my $ar = [ [ 'HEAD_goes_here', 'BODY_here' ], [ 'FOOT', 'FOOT', 'FOOT', 'FOOT' ] ]; my @flat = @$ar; while ( any { ref [] eq ref $_ } @flat ) { @flat = map { ref [] eq ref $_ ? \(@$_) : \$_ } @flat; @flat = map { ref \\"" eq ref $_ ? $$_ : $_ } @flat; } is_deeply \@flat, [map \$_, qw[ HEAD_goes_here BODY_here FOOT FOOT FOOT FOOT ] ]; is_deeply [flatten($ar)], \@flat;

What's wrong with the "less helpful" template? Both approaches return the same result.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

In reply to Re: "Nonliteral literal" is just an expression. by choroba
in thread "Nonliteral literal" is just an expression. by rir

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":