You should find the second operand in
$4 after any successful match of your regular expression. If you omit the unnecessary brackets around
=< it'll show up in
$3 - where I guess you were expecting it. (BTW: You're probably not trying to parse Perl code, do you? Otherwise you want to look for "
a==b" instead of "
a=b", for "
a>=b" instead of "
a=>b", and for "
a<=b" instead of "
a=<b".)
Anyway, your current regular expression won't recognize the operators
!= or
=> at all. Unless your program is supposed to recognize and handle the input of undefined operators
split /(\W+)/ (as suggested above) might be a sufficient alternative. If you want to throw an error message on something like
a=[b you can use
/^(.*?)(!=|=>|=<|[<=>])(.*)/
and react appropriately if there's no match.