in reply to foreach loop running too many times...?

You assign capture groups to $molec and $frame, but never use the assigned values. Instead, you change their values in the loops.

Unrelated comments:

($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,