While writing my reply to another post, I wanted to experiment with 5.10's new named captures. But then the code included some modifications to be performed on one of them, and perl spit our an error which I can reproduce here with a simpler example:
spock:~ [13:01:13]$ cat guyov.pl ; ./guyov.pl #!/usr/bin/perl use strict; use warnings; use 5.010; $_ = "foo bar baz"; s/ (?<first> \w+)\s+(?<second> \w+) / $+{first} =~ y|o||d; "$+{first} $+{second}" /ex; say; __END__ Modification of a read-only value attempted at ./guyov.pl line 9.
Now, I easily understand why numbered captures should be read only, since they may be clobbered by another regexp-like operator. But from the UI POV, IMHO (sic!) if you use named captures, then you have control enough to know better: if you do want to clobber them, then it's your business, but I think it would be intuitive to use say $+{first} and $+{second} more or less as if they were the lexical variables $first and $second.
Is the limitation on %+ being read-only a technical one due to implementation details, or are there more sound motivations for it to be, which I may have easily overlooked?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Why are 5.10's named captures read only? (tuit)
by tye (Sage) on Oct 19, 2008 at 17:22 UTC | |
|
Re: Why are 5.10's named captures read only?
by JavaFan (Canon) on Oct 19, 2008 at 18:53 UTC | |
by blazar (Canon) on Oct 20, 2008 at 12:45 UTC | |
|
Re: Why are 5.10's named captures read only?
by ambrus (Abbot) on Oct 20, 2008 at 11:39 UTC | |
by tye (Sage) on Oct 20, 2008 at 13:42 UTC | |
by ambrus (Abbot) on Oct 20, 2008 at 20:39 UTC | |
by tye (Sage) on Oct 20, 2008 at 23:00 UTC | |
by blazar (Canon) on Oct 20, 2008 at 12:02 UTC | |
by JavaFan (Canon) on Oct 20, 2008 at 12:14 UTC | |
by blazar (Canon) on Oct 20, 2008 at 12:55 UTC |