What is your difference between moving and renaming? In UNIX language, you can rename a file if source and destination are in the same filesystem (aka partition). That's very fast, because only inode information is changed. If they are not: You copy the source file to destination and unlink the source file. That's the way it goes.
If you use perl's rename, you should take care about this. That's why I pointed you to the CPAN module. It takes this care for you and does the same as mv(1) does (if renaming is not possible): Read the source file and write it to its destination.