Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^2: "Nonliteral literal" is just an expression.

by rir (Vicar)
on Sep 24, 2019 at 21:30 UTC ( #11106658=note: print w/replies, xml ) Need Help??

in reply to Re: "Nonliteral literal" is just an expression.
in thread "Nonliteral literal" is just an expression.

What's wrong with the "less helpful" template?

That is the interesting part. And it surprises me that I have never been caught by this in my years of occasional programming. I am still chewing on that aspect.

Both approaches return the same result.

Not quite, your tests are flawed. I wanted references to the same memory objects ("thingie" is out of style?) so running @flat through both your and my code is suspect on its face. When I comment out the while loop I don't get a happy result.

On a side note: In the "not-thinking" part I started on a recursive solution; when I hit some snags and applied some thought map seemed a clear win. I should study the methods to go from one to the other: iter. vs. recurs.

Using a shorter array:

my $ar = [ [ 'a', ], [ 'b, 'c', ], ]; my $flat = flat( $ar ); print Dumper $ar, $flat;
should yield:
$VAR1 = [ [ 'a' ], [ 'b', 'c' ] ]; $VAR2 = [ \$VAR1->[0][0], \$VAR1->[1][0], \$VAR1->[1][1] ];

Replies are listed 'Best First'.
Re^3: "Nonliteral literal" is just an expression.
by choroba (Archbishop) on Sep 25, 2019 at 08:27 UTC
    Ah, now I understand! A small change in the flatten subroutine should fix that.
    sub flatten { my ($struct) = @_; if (ref [] eq ref $struct) { return map flatten($_), @$struct } else { return \$_[0] # <- We need to use the alias, not a copy. } }
    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11106658]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2021-04-20 20:03 GMT
Find Nodes?
    Voting Booth?

    No recent polls found