Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (6)
As of 2020-09-23 06:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If at first I donít succeed, I Ö










    Results (130 votes). Check out past polls.

    Notices?