2011-02-08 7 views

답변

5
perldoc에서

:

$mode = (stat($filename))[2]; 
printf "Permissions are %04o\n", $mode & 07777; 

읽기 - 다른 사람을 위해 당신은 (상대적으로) 현대 솔루션

print "read for everyone" if $mode & 4; # pick bit 2 from mode 
+3

"다른 사용자"는 읽을 수 있지만 "사용자"또는 "그룹"은 읽을 수없는 모호한 경우에는 올바르게 작동하지 않습니다. 또한 File :: Stat 및 Fcntl을 사용하여 하드 코드 된 숫자를 사용하지 않는 것이 좋습니다. – mscha

+3

@mscha 상수가 더 좋다고 동의하지만, 내가 문서를보기 전까지는 아무 말도하지 않습니다. 불명확 한 경우에,'$ mode & 0444 == 0444'를 할 수 있습니다. 예를 들어 +1. – bvr

+0

은 상수가 너무 이상하다는 데 완전히 동의합니다. 필자는 더 나은 현대 Perl 솔루션을 알지 못합니다. – mscha

2

stat 기능을 사용하십시오.

+0

어떻게 할 수 있습니까? – Tree

+3

@Tree : 명령을 모른다면'perldoc -f stat'를 사용하여 확인하거나 [stat at perldoc.perl.org] (http://perldoc.perl.org/functions/stat.html)를 확인하십시오.) – Tim

9

을 할 수있는 비트 추출하려면, 5.004 이후 File::stat, 핵심 모듈을 사용하고 Fcntl Perl 5에 항상 포함되어 있습니다. perldoc -f stat도 참조하십시오.

use strict; 
use warnings; 
use File::stat; 
use Fcntl qw(:mode); 

... 

my $mode = stat($filename)->mode; 
my $allCanRead = ($mode & S_IRUSR) # User can read 
       && ($mode & S_IRGRP) # Group can read 
       && ($mode & S_IROTH); # Others can read 
관련 문제