Re: pugs: rw block parameters
On 8/24/06, Audrey Tang <[EMAIL PROTECTED]> wrote: Mark, can you add a test to t/statements/for.t? A commit bit is on its way to your inbox. :-) Done. Tests 37 (implicit "rw $_") and 38 (explicit "-> $x is rw") add to for.t as of r12968. -- Mark J. Reed <[EMAIL PROTECTED]>
Re: pugs: rw block parameters
On 8/24/06, Audrey Tang <[EMAIL PROTECTED]> wrote: Mark, can you add a test to t/statements/for.t? A commit bit is on its way to your inbox. :-) Happily, as soon as I receive it. Upon further investigation I see that the problem is not rw parameters per se, but the ability to pass individual lvalue items into them. That is, this works (and a test for it is already in for.t): my @a = (0..2); for @a { $_++ } say @a; # 1,2,3 But this dies with the "Can't modify constant item: VRef " message: my ($a,$b,$c) = 0..2; for ($a,$b,$c) { $_++; } That may be what you fixed; I haven't built r12675 yet to see. But it's not what I thought the problem was. :) -- Mark J. Reed <[EMAIL PROTECTED]>
Re: pugs: rw block parameters
在 2006/8/25 上午 4:37 時,Larry Wall 寫到: On Thu, Aug 24, 2006 at 03:11:10PM -0400, Mark J. Reed wrote: : On 8/24/06, Larry Wall <[EMAIL PROTECTED]> wrote: : >On Wed, Aug 23, 2006 at 05:01:43PM -0400, Mark J. Reed wrote: : >: Sorry if this is a known question, but I didn't see it mentioned in the : >: recent archive or FAQ. : >: : >: for ($a, $b) { $_ = ... } : >: : >: gives me a "Can't modify constant item: VRef ". : > : >Which is correct as the default. : : Not according to the spec. S04 says: Oops, sorry, was confusing implicit $_ with explicit ->$_. You are correct. And indeed I confused it as well. Fixed as of r12675. Mark, can you add a test to t/statements/for.t? A commit bit is on its way to your inbox. :-) Thanks! Audrey PGP.sig Description: This is a digitally signed message part
Re: pugs: rw block parameters
On Thu, Aug 24, 2006 at 03:11:10PM -0400, Mark J. Reed wrote: : On 8/24/06, Larry Wall <[EMAIL PROTECTED]> wrote: : >On Wed, Aug 23, 2006 at 05:01:43PM -0400, Mark J. Reed wrote: : >: Sorry if this is a known question, but I didn't see it mentioned in the : >: recent archive or FAQ. : >: : >: for ($a, $b) { $_ = ... } : >: : >: gives me a "Can't modify constant item: VRef ". : > : >Which is correct as the default. : : Not according to the spec. S04 says: Oops, sorry, was confusing implicit $_ with explicit ->$_. You are correct. Larry
Re: pugs: rw block parameters
On 8/24/06, Larry Wall <[EMAIL PROTECTED]> wrote: On Wed, Aug 23, 2006 at 05:01:43PM -0400, Mark J. Reed wrote: : Sorry if this is a known question, but I didn't see it mentioned in the : recent archive or FAQ. : : for ($a, $b) { $_ = ... } : : gives me a "Can't modify constant item: VRef ". Which is correct as the default. Not according to the spec. S04 says: If you rely on C<$_> as the implicit parameter to a block, then [it] is considered read/write by default. That is, the construct: for @foo {...} is actually short for: for @foo -> $_ is rw {...} -- Mark J. Reed <[EMAIL PROTECTED]>
Re: pugs: rw block parameters
On Wed, Aug 23, 2006 at 05:01:43PM -0400, Mark J. Reed wrote: : Sorry if this is a known question, but I didn't see it mentioned in the : recent archive or FAQ. : : for ($a, $b) { $_ = ... } : : gives me a "Can't modify constant item: VRef ". Which is correct as the default. : Making it explicitly rw doesn't help: : : for ($a, $b) -> $x is rw { $x = ... } : : Is this a "haven't gotten around to rw parameters in blocks yet" or a : regression? Not implemented, I think, but could be a regression. In any event, not right currently. Larry
pugs: rw block parameters
Sorry if this is a known question, but I didn't see it mentioned in the recent archive or FAQ. for ($a, $b) { $_ = ... } gives me a "Can't modify constant item: VRef ". Making it explicitly rw doesn't help: for ($a, $b) -> $x is rw { $x = ... } Is this a "haven't gotten around to rw parameters in blocks yet" or a regression? -- Mark J. Reed <[EMAIL PROTECTED]>