http://www.perlmonks.org?node_id=1006095


in reply to Sorting array, getting modification of read-only value error

What tobyink++ said. You are filling your @S array starting at index 1 ($v=1;). But arrays are (by default) zero indexed, so $S[0] has nothing in it. Sort then tries to auto-vivify values for $S[0] and gives you an error. Minimal "fix" is to index $v from 0.

You have many, many other sub-optimal things in there too though.