in reply to Do and Die

system will return the return code from the OS. This will be 0 if it is successful, thus a successful "move" will return a false value.

You want something like...
Die ("data load","YTSMSC","High","Could not move file: $filename for s +uccessful exit: $@") if system("mv $filename $localpath/archives/");
or more readable
system("mv $filename $localpath/archives/"); Die ("data load","YTSMSC","High","Could not move file: $filename for s +uccessful exit: $@") if $?;