in reply to is behaviour undefined for string comparision with ==

You've silently edited your post. That's going to confuse people reading the existing replies. Normally, you'd mark what you updated. Now, about your new question:

No, == on strings is very well defined. The string arguments will first be converted to numbers. Strings that don't look like a number get converted to zero.

Yes, eq is case-senstive. If you wish to do a case-insensitive compare, use
if (lc($a) eq "mssql")

By the way, $a and $b are special variables. You should avoid them.