in reply to What's happening to my $1?

That's definitely a strange situation you've got there. The problem has something to do with the quantifier in the regex. When I replace /^([A-Z]+)$/ with /^([A-Z]*)$/ (i.e. change the '+' to a '*') I get...
In if: FOO In else: In else: In if: BAR In else:
while changing the regex to /^([A-Z]{2,})$/ results in...
In if: FOO In else: FOO In else: In if: BAR In else: BA
While experimenting with {0,} {1,} {3,}, etc. it seems like in the non-matching case, $1 contains characters from the previous match and the number of them depends on the value for the minimum quantifier of the regex . I wouldn't try to depend on this behaviour if I were you:-)