Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re^2: PERL chmod inconsistent with the LINUX equivalent

by ColonelPanic (Friar)
on Nov 22, 2012 at 10:12 UTC ( #1005097=note: print w/replies, xml ) Need Help??

in reply to Re: PERL chmod inconsistent with the LINUX equivalent
in thread PERL chmod inconsistent with the LINUX equivalent

I disagree.

The problem is that you need a leading zero in order for a number in Perl to be interpreted as octal. That isn't explicitly mentioned in the chmod() documentation, and might not be clear if you don't already know it.

print 0777 . " (octal)\n"; print 777 . " (decimal)\n";

When's the last time you used duct tape on a duct? --Larry Wall

Replies are listed 'Best First'.
Re^3: PERL chmod inconsistent with the LINUX equivalent
by marto (Bishop) on Nov 22, 2012 at 10:23 UTC

    IMHO the chmod documenation is fairly comprehensive.

    "... The first element of the list must be the numeric mode, which should probably be an octal number, and which definitely should not be a string of octal digits: 0644 is okay, but "0644" is not. Returns the number of files successfully changed. See also oct if all you have is a string."

    Note the link to oct, and the fact that the examples clearly show the leading zero. Then follows examples explaining the outcome of several ways of using chmod, including the outcome of using it without the leading zero incorrectly. If you feel this isn't clear enough feel free to contribute to the documentation.

    Update: Strike out mistake.

      Maybe I should have stated that a little less strongly. I don't have a problem with the chmod documentation as such. I just don't think "read the documentation" is the best answer when the documentation doesn't explicitly address the mistake the OP made. The significance of the leading zero might not be clear to someone who doesn't already know what it means.

      When's the last time you used duct tape on a duct? --Larry Wall

        The point OP made is that perls chmod does not work the same as chmod on their linux system. The linux chmod command assumes that missing digits are leading zeros, perls chmod does not operate in the same manner. The docuemtnation I suggested reading (and understanding) provides examples and an explanation that the number passed should be an octal number. Perhaps to fully understand this I should also have suggested that OP read man chmod to understand why it works the way it does. The docs also point to portability issues on certain platforms.

        IMHO reading the documentation for each command provedes sufficent information to explain why they behave differently.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005097]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2017-05-01 06:43 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (545 votes). Check out past polls.