in reply to Re: Attempt to free unreferenced scalar in File::Copy (ActivePerl)
in thread Attempt to free unreferenced scalar in File::Copy (ActivePerl)

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