in reply to "Nonliteral literal" is just an expression.
#!/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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: "Nonliteral literal" is just an expression.
by rir (Vicar) on Sep 24, 2019 at 21:30 UTC | |
by choroba (Cardinal) on Sep 25, 2019 at 08:27 UTC |