in reply to Replacing matches within string without splitting.

The /e switch coupled with sprintf?

while (<DATA>) { s/(\d+)/ sprintf("%02d", $1) /ge; print $_; } __DATA__ 1,2,3,4 8,9,10,11 7,8,9,10 12,13,14,15