Could you please elaborate what you mean by removing the offending function names from the list?
Remove the "NOINHERIT" from the line:
for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) {
Also, remove entirely (or comment out):
# Special case O_EXLOCK
$LOCKFLAG = eval {
local $SIG{__DIE__} = sub {};
local $SIG{__WARN__} = sub {};
&Fcntl::O_EXLOCK();
};
And remove entirely (or comment out):
unless ($^O eq 'MacOS') {
for my $oflag (qw/ TEMPORARY /) {
my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
local($@);
no strict 'refs';
$OPENTEMPFLAGS |= $bit if eval {
# Make sure that redefined die handlers do not cause problems
# e.g. CGI::Carp
local $SIG{__DIE__} = sub {};
local $SIG{__WARN__} = sub {};
$bit = &$func();
1;
};
}
}
What does the following output:
perl -le print $^O
File::Temp clearly expects that, unless $^O is 'MacOS', then the Fcntl module will provide the O_NOINHERIT, O_EXLOCK and O_TEMPORARY macros.
Possibilities are:
1) That the Fcntl module is not constructed correctly;
2) that $^O is set incorrectly;
3) that the condition "unless ($^O eq 'MacOS')" needs to be modified.
What version of Fcntl do you have ?
Like you, on my perl-5.10 (windows), I have version 0.22 of File::Temp - and I have version 1.06 of Fcntl.
Updating to a more recent version of perl (say 5.28.x) may well fix the problem, though what you're experiencing is very strange and I'm loath to blame it on the age of your perl-5.10.1.
Cheers, Rob
|