Syntactic Confectionery Delight PerlMonks

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

by rir (Vicar)
 on Sep 24, 2019 at 21:30 UTC Need Help??

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]

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?
As of 2021-04-18 02:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?