in reply to schwartzian transform
What steps have you undertaken to debug this issue?
What values does $b->[1] and $a->[1] have? How could you find this out yourself?
What does the following code output?
$_= '31,wppra00a0513'; print /.+,/;
Compare the output with
$_= '31,wppra00a0513'; print /(.+),/;
Maybe you want to read Regexp Quote-Like-Operators on how m/.../ behaves in list context.
Update: My interpretation of your input data might be off-base. Still, the debugging steps outlined above still hold.
In Section
Seekers of Perl Wisdom