Well, I am unsure about what you mean by properly encoding them. The variables write fine into MySQL and into the web pages I am producing. Just not to the actual file.
For instance, further above in the subroutine, I utf_escape($title), because I do some processing on the file before I save it, and the program I use doesn't like funny names. But I figured there should be no problem writing the filename, because my filesystem can certainly handle utf8. But perl/mv seem not to be able to write it directly.
Well, I am unsure about what you mean by properly encoding them.
Then you very probably haven't. Please read the Perl Unicode Tutorial at http://tnx.nl/perlunitut and update your program. Perl's unicode support goes much deeper than just allowing byte strings, and typically means you have to change your input and output routines.