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?
In reply to Why are 5.10's named captures read only? by blazar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |