Nice object-oriented design but I hope this is just a snippet since a sub alone in a package doesn't do much:o). Answers:
a) look at opendir, readdir, and closedir. These functions allow you to read in all of the filenames of a specific directory. With that info, you can easily create your new files with open(FILE,"<myfile.txt"); which will create a new file if it doesn't already exist and nuke an existing file of that name (perhaps you should be checking for this- do you REALLY want to haphazardly overwrite files?)
b) Are you deleting the old files? All you really need to do here is use open appropriately as shown above. You're not really changing the file extension, you are changing the entire name. If you are recursing through multiple directories, look into File::Find or File::Recurse and see which one meets your needs. They can only help to simplify and make your code more portable.