2010-12-13 19 views

Répondre

2
my $mode; 
(undef, undef, $mode) = stat($directoryname); 
+0

Quelle est la sortie de 'ls -ld/etc/cron.d'? – cdhowie

5

D'autres exemples que vous devez savoir que le mode est le troisième élément de sortie de stat (c.-à-[2]). File :: stat vous permet de donner un nom symbolique.

use File::stat ; 
my $dir = '/etc/cron.d' ; 
printf "%o", stat($dir) -> mode ; 
+1

+ 1 ce module est mieux que le stat intégré – daxim

0

Bonne réponse jusqu'à maintenant. Je souhaite ajouter un bon module supplémentaire.

La plupart du temps, vous voulez seulement connaître le mode d'un fichier pour pouvoir le manipuler ensuite. use Fcntl qw(:mode) ou use POSIX qw(:sys_stat_h) exporter les constantes nécessaires, par ex. S_IXUSR. Je trouve que c'est compliqué, même sujet aux erreurs car c'est le moment rare en Perl où vous rencontrez des mathématiques avec des nombres octaux et des opérateurs de bits.

A cet effet, File::chmod a la meilleure interface car il vous permet d'exprimer le changement

  • sans la nécessité d'interroger explicitement l'ancien mode et calculer la nouvelle,
  • de façon plus familière que octal, à savoir
    • symbolique, connu de chmod(1), par exemple u-x
    • comme dans ls(1), par ex. -rw-r--r--