Not really a bug when you use invalid syntax

Also, the reasons for [ ] and $eval working are different. The [ ] brackets evaluate %b early whereas $eval just serves as 'padding' (for want of a better word). Something like
$abs(%b) or
$null %b would have the same effect (seperating the %var from the comma is the issue, IIRC).