in reply to Bad File Descriptor Error

Are you sure Win32::CopyFile uses $! to report errors? My guess is you're just seeing some left-over junk in there. Most modules use $@, which seems particularly likely given your use of eval{}.

-sam