Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^10: ref to read-only alias ... why? (notabug)

by dk (Chaplain)
on Jan 06, 2012 at 21:57 UTC ( [id://946671]=note: print w/replies, xml ) Need Help??


in reply to Re^9: ref to read-only alias ... why? (notabug)
in thread ref to read-only alias ... why?

The literal «123» should return a modifiable value.

Could you elaborate on that please? I don't find that neither convincing nor intuitive. If that's true, why error message "Modification of a read-only value" exists at all? By the same logic 123++ should be working fine, no?

Replies are listed 'Best First'.
Re^11: ref to read-only alias ... why? (notabug)
by ikegami (Patriarch) on Jan 06, 2012 at 22:01 UTC
    Expected result:
    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 } }
      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.

        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.

Re^11: ref to read-only alias ... why? (notabug)
by ikegami (Patriarch) on Jan 06, 2012 at 22:06 UTC

    123++ should be working fine, no?

    A "useless" warning would be appropriate.

    ++123 would be equivalent to 1+123, though.

      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.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (7)
As of 2024-03-19 09:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found