Well you have a bit of a thinko there, in that you are assigning your undefined variables to overwrite your argument list, when you should be doing it the other way around (use strict and warnings or -w would help you a lot). A better option would be to
use File::Copy.
rename is often ok but a bit unpredictable as to what capabilities it has depending on your OS.
--
I'd like to be able to assign to an luser