/(?<=_)00001(?=[.]\w+$)/ #### rand(9999999)+1 #### s/(?<=_)00001(?=[.]\w+$)/sprintf "%07d" => rand(9999999)+1/e #### $ 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; } ' #### XYZ12345_X05_20110805_9999999_00000.TXT XYZ12345_X05_20110805_9999999_1656320.TXT XYZ12345_X05_20110805_9999999_00002.TXT XYZ12345_X05_20110805_9999999_00001x.TXT XYZ12345_X05_20110805_00001_0901076.TXT XYZ12345_X05_20110805_00001_00001xxx.TXT