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 [download]