in reply to brackets matching problem

Try
$_ = '123'; if(/(1|12)(2?)/) { print "1=[$1] 2=[$2]\n"; } if(/(12|1)(2?)/) { print "1=[$1] 2=[$2]\n"; }
and compare (left to right).

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.