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

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

by dk (Chaplain)
on Jan 06, 2012 at 18:08 UTC ( #946639=note: print w/ replies, xml ) Need Help??


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

I agree on a warning, it would be a practical thing, after all. And after that, a real fix with 'die' a couple versions later should help the legacy code.

Well anyway, I found the code suggested by ikegami, so would you guys review the patch please?

--- pp.c.0 2012-01-06 01:07:34.511988700 +0100 +++ pp.c 2012-01-06 19:04:06.311428300 +0100 @@ -515,9 +515,11 @@ SvTEMP_off(sv); SvREFCNT_inc_void_NN(sv); } - else if (SvPADTMP(sv) && !IS_PADGV(sv)) + else if (SvPADTMP(sv) && !IS_PADGV(sv)) { + Perl_ck_warner(aTHX_ packWARN(WARN_MISC), + "Implicit copy of a read-only scalar due to aliasing"); sv = newSVsv(sv); - else { + } else { SvTEMP_off(sv); SvREFCNT_inc_void_NN(sv); }


Comment on Re^6: ref to read-only alias ... why? (notabug)
Download Code
Re^7: ref to read-only alias ... why? (notabug)
by ikegami (Pope) on Jan 06, 2012 at 18:34 UTC
      Well, I give up then.
      Could you please clarify which the "working case" is in your opinion?

      I agree with tye that there are good arguments for both perspectives.

      Cheers Rolf

        Could you please clarify which the "working case" is in your opinion?

        It shouldn't matter whether your scalar was created by «my $x» or by «123». The literal «123» should return a modifiable value. The code in \ is specifically there to emulate that without the cost of creating a new scalar every time «123» is evaluated.

        I agree with tye that there are good arguments for both perspectives.

        I can't find these arguments. Could you give me a link?

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (9)
As of 2014-11-28 19:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (200 votes), past polls