You didn't convert the file names into shell string literals when you created the shell command. There are two simpler alternatives:
You can use the multi-arg form of system which passes the arguments to the child without serializing them*:
system('cp', $oldname, "renamed/$newname")
or die("cp: $!/$?\n");
You can use File::Copy:
copy($oldname, "renamed/$newname")
or die("copy: $!\n");
* — Serialization will occur in Windows, but Perl will handle quoting and escaping for you (within the limits of Windows's command line abilities).