use strict; use warnings; while() { $_ =~ s/(\D*)(\d*)(\D*)(\d*)/$3$2$4$1/g; print $_; } __DATA__ AAAAAAAAAA1111BBBBBB222222 BBBBBBBBBB2222CCCCCC333333 CCCCCCCCCC3333DDDDDD444444