Since this is a question regarding why your if condition is unexpectedly true, collect some sample cases where it is not behaving as expected.
Since you are doing a simple regex test against a single value, your question likely boils down to "Why does this string get matched by this regex?"
if ($strands{$ID[$i]} =~ m/\+/) { That regex matches any string containing a '+' anywhere in it. In the case where you think it should NOT match but is matching, print out the string $strands{$ID[$i]} (not just $ID[$i] as your comment implies) and see what it contains.
Appended:
I notice at the top you are checking if '-', elsif '+', but at the bottom of your code, you are checking if '+' elsif '-'. If you have a string that contains both a + and a -, that may be causing some confusion.
In reply to Re^3: error calling variables? Going insane...
by SuicideJunkie
in thread error calling variables? Going insane...
by lecb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |