in reply to File::Temp throwing errors after installation of a module

This error should not suddenly appear, since File::Temp is a Perl core module. Maybe it got upgraded by installing the other module, but even then, that warning shouldn't appear.

What is your Perl version? You can find it by running perl -v.

I think that the fix should work as you posted it, but in your weird/special case, you could just remove the offending function names from the list, as they will not be defined anyway.

Replies are listed 'Best First'.
Re^2: File::Temp throwing errors after installation of a module
by Anonymous Monk on Feb 12, 2019 at 22:14 UTC
    Thank you for the response! Our current Perl version is 5.10.1, File::Temp's version is 0.22. Could you please elaborate what you mean by removing the offending function names from the list?
      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