/(?<=_)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