Как узнать режим (разрешения) каталога? - PullRequest
3 голосов
/ 13 декабря 2010

Как узнать режим (разрешения) каталога?

Ответы [ 4 ]

8 голосов
/ 13 декабря 2010

Согласно perldoc -f stat:

$mode = (stat($filename))[2];
printf "Permissions are %04o\n", $mode & 07777;
5 голосов
/ 13 декабря 2010

Другие примеры требуют, чтобы вы знали, что режим является третьим элементом в выводе статистики (т.е. [2]).File :: stat позволяет вам дать символическое имя.

use File::stat ;
my $dir = '/etc/cron.d' ;
printf "%o", stat($dir) -> mode ;
2 голосов
/ 13 декабря 2010
my $mode;
(undef, undef, $mode) = stat($directoryname);
0 голосов
/ 13 декабря 2010

Хорошие ответы до сих пор.Я хочу добавить еще один хороший модуль.

В большинстве случаев вам нужно знать только режим файла, чтобы потом можно было им манипулировать.use Fcntl qw(:mode) или use POSIX qw(:sys_stat_h) экспортируйте необходимые константы, например, S_IXUSR.Я нахожу это громоздким, даже подверженным ошибкам, так как это редкий случай в Perl, где вы сталкиваетесь с математикой с восьмеричными числами и битовыми операторами.

Для этой цели File :: chmod имеет лучший интерфейс , потому что он позволяет выразить изменение

  • без необходимости явного запроса старого режима и вычисления нового
  • более привычными способами, чемвосьмеричное, а именно
    • символьное, известное из chmod (1) , например u-x
    • как в ls (1) , например -rw-r--r--
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...