use File::Basename; foreach () { chomp $_; ($file,$base,$ext)=fileparse($_,qr/.[^.]*/); $file =~ tr/\./\_/; print "Change: $_ to ${file}${ext}\n"; } __DATA__ test0.file0.new_20060411.zip test1.file1.new_20060411.zip test2.file2.new_20060411.zip test3.file3.new_20060411.zip