use strict; use warnings; use 5.010; my @filenames =('XYZ12345_X05_20110805_9999999.TXT', 'XYZ12345_X05_20110805_9999999_00001.TXT'); for my $filename (@filenames) { my $rd = int( rand(100000)) + 999999; say "unchanged_filename: $filename"; $filename =~ s/_00001\./_$rd./; say "changed_filename: $filename"; }