Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# chmod

Perl 5 version 16.0 documentation
Go to top
Show recent pages
Recently read

# chmod

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- chmod LIST

  Changes the permissions of a list of files. 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.

          $cnt = chmod 0755, "foo", "bar";    chmod 0755, @executables;    $mode = "0644"; chmod $mode, "foo";      # !!! sets mode to                                             # --w----r-T    $mode = "0644"; chmod oct($mode), "foo"; # this is better    $mode = 0644;   chmod $mode, "foo";      # this is best

  On systems that support fchmod(2), you may pass filehandles among the files. On systems that don't support fchmod(2), passing filehandles raises an exception. Filehandles must be passed as globs or glob references to be recognized; barewords are considered filenames.

          open(my $fh, "<", "foo");    my $perm = (stat $fh)[2] & 07777;    chmod($perm | 0600, $fh);

  You can also import the symbolic `S_I*` constants from the `Fcntl` module:

          use Fcntl qw( :mode );    chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;    # Identical to the chmod 0755 of the example above.

  Portability issues: chmod in perlport.