Expected Current
for (1..2) {
for (1) {
my $r = \$_;
++$$r;
say $$r; 2 2 2 2 (threaded)
} [die] (non-threaded)
}
for (1..2) {
for (1) {
++$_;
say; 2 2 [die]
}
}
for (1..2) {
for (1..3) {
++$_;
say; 234 234 234 345
}
}
| [reply] [Watch: Dir/Any] [d/l] |
If I'm not mistaken, I believe that there's another issue you're trying to pull it here, namely difference between for(1) and for(1..3). They _do_ behave weirdly, I totally agree. But I believe that's a totally separate issue, probably related to parser even, because this code:
my $a = 2;
$_++ for 1..$a;
print "$a\n";
# 2
shows that $a is not aliased. Therefore I don't see how the original problem that needs a scalar be both aliased and read-only, is relevant here. | [reply] [Watch: Dir/Any] [d/l] [select] |
You seem to be operating from the point of view that "It's self-evident that literals should create non-modifiable values." Yet that's currently not the case in 50% of the examples I posted.
«1» in «for (1)» could return a non-modifiable value, but it intentionally returns a modifiable value (in a sense) some of the times.
«1..3» in «for (1..3)» could return non-modifiable values, but it returns modifiable values, and it's intentionally not getting changed because people want literals to return modifiable values.
It's not self-evident that literals should create non-modifiable values.
| [reply] [Watch: Dir/Any] [d/l] [select] |
123++ should be working fine, no?
A "useless" warning would be appropriate.
++123 would be equivalent to 1+123, though.
| [reply] [Watch: Dir/Any] [d/l] [select] |
I don't mind that, but now we're off-topic, and veering into quite another direction. You're welcome to raise this question on p5p, if 123++ should behave as you're suggesting, and even though I see chances on accepting that are small, hopefully you'd be able to achieve the change. That change is not my focus though, sorry, I'd be rather happy to just remove that one small inconsistency from the Perl behavior. And if you could help me with that, I'd be grateful.
| [reply] [Watch: Dir/Any] |