Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Why doesn't chmod work on this lexical filehandle?

by Anonyrnous Monk (Hermit)
on Feb 15, 2011 at 04:06 UTC ( #888119=note: print w/ replies, xml ) Need Help??


in reply to Re: Why doesn't chmod work on this lexical filehandle?
in thread Why doesn't chmod work on this lexical filehandle?

...only works if your system supports chmod on file handles in general (i.e. it supports fchmod).

While this is technically correct, it's almost certainly irrelevant, as the OP is using Linux, and fchmod was introduced with kernel 0.96a almost two decades ago (when the entire kernel source tarball was just 200k).

Rather, the problem is with older versions of Perl.  For example, when I strace a test script running under 5.8.4, I'm getting

chmod("*main::OUT", 0444) = -1 ENOENT (No such file or d +irectory)

for "chmod 0444, *OUT", and something like

chmod("GLOB(0x602210)", 0444) = -1 ENOENT (No such file or d +irectory)

for "chmod 0444, $OUT",  while newer versions of Perl in both cases correctly do

fchmod(4, 0444) = 0

In other words, older versions simply passed the stringified handle to the chmod system call...

The OP's case definitely works with 5.8.8 (and newer), though.


Comment on Re^2: Why doesn't chmod work on this lexical filehandle?
Select or Download Code
Re^3: Why doesn't chmod work on this lexical filehandle?
by williff (Initiate) on Feb 15, 2011 at 15:45 UTC

    Yes, thank you. Changing to perl 5.10.1 (latest on our network) from 5.8.0 fixed the problem. Many thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://888119]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2014-12-25 04:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (159 votes), past polls