G'day Joseph,
There are a number of ways in which that diagnostic message could be generated and the cause can be difficult to track down. Take a look at perldiag and search for "Modification of a read-only value attempted": it describes a number of subtle ways in which you might be attempting this modification that are not immediately obvious. Now look at your code, around the line number of the error, for something that's similar to what's described.
I also note that your string uses interpolating double-quotes. Perl is not seeing what you perhaps think it's seeing. Using a cut-down version of what you posted:
$ perl -E 'my $x = "...-L^\^\+~p...M-^@iM-^OM...M-\E+^W...M-\HJ..."; s +ay $x' ...-L^^+~p...M-^-^OM...M-+^W...M-HJ...
If you use the strict and warnings pragmata, Perl will tell you about these types of problems. With the same cut-down string, here's a selection:
$ perl -Mstrict -Mwarnings -E 'my $x = "...-L^\^\+~p...M-^@iM-^OM...M- +\E+^W...M-\HJ..."; say $x' Possible unintended interpolation of @iM in string at -e line 1. Useless use of \E at -e line 1. Unrecognized escape \H passed through at -e line 1. Global symbol "@iM" requires explicit package name (did you forget to +declare "my @iM"?) at -e line 1. Execution of -e aborted due to compilation errors.
— Ken
In reply to Re: Modification of a read-only value attempted
by kcott
in thread Modification of a read-only value attempted
by josthi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |