in reply to Using "negative" characters with the range operator.

See perlop, in particular the behaviour of the range operator in list context. Especially, the following paragraph:
If the final value specified is not in the sequence that the magical increment would produce, the sequence goes until the next value would be longer than the final value specified.

-'a' is the same as '-a' (see Unary "-" under Symbolic Unary Operators in perlop again) which for the range operator is the same as '*a', '%a', '^a' etc.

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,