$ perl -Mstrict -Mwarnings -le ' my @test_filenames = qw{ XYZ12345_X05_20110805_9999999_00000.TXT XYZ12345_X05_20110805_9999999_00001.TXT XYZ12345_X05_20110805_9999999_00002.TXT XYZ12345_X05_20110805_9999999_00001x.TXT XYZ12345_X05_20110805_00001_00001.TXT XYZ12345_X05_20110805_00001_00001xxx.TXT }; for (@test_filenames) { s/(?<=_)00001(?=[.]\w+$)/sprintf "%07d" => rand(9999999)+1/e; print; } '