After reading your post, I tried directly calling Win32::CopyFile(), and it worked with no warning:
use Win32;
Win32::CopyFile(
"$src_path/$upc/$realtracknum.mp3",
"$dst_path/$upc/$realtracknum.mp3",
1
) or
warn "couldnt File::Copy $src_path/$upc/$realtracknum.mp3: $!";
And the actual call to Win32::CopyFile() in File/Copy.pm (nested within a large, unwieldy if..else chain) uses the same syntax:
return 0 unless @_ == 2;
return Win32::CopyFile(@_, 1);
So the problem seems to be with File/Copy.pm calling Win32::CopyFile(). Whatever that seems to indicate, though, I'm not quite sure.
Addendum: I also tried passing an actual array, to see if that somehow pooched the XS code, but this still works without any warnings:
my @copy_args = (
"$src_path/$upc/$realtracknum.mp3",
"$dst_path/$upc/$realtracknum.mp3"
);
Win32::CopyFile(@copy_args, 1) or
warn "couldnt File::Copy $src_path/$upc/$realtracknum.mp3: $!";
__________ Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
- Terry Pratchett
|