Bienvenido a los foros de Perl en Español, noitora-5.
noitora-5 escribiste:¿Qué pasa si quiero saber si el archivo tiene permisos 777(-rwxrwxrwx), 766 (-rwxrw-rw-), 666(-rw-rw-rw-)?
La función stat() devuelve una lista de 13 valores, de los cuales el que te interesa es el tercero, que guarda el valor -en decimal- de los permisos del archivo indicado. A ese valor le debes aplicar una máscara para quedarte con el rango de bits que quieres comprobar, y luego hacer la comparación. Ejemplo:
Using perl Syntax Highlighting
$permisos = (stat "archivo")[2
] & 0777
; # Tercer elemento de stat(), ANDeado con el valor octal '777'Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Y ahora ya puedes hacer la comparación:
Using perl Syntax Highlighting
if ($permisos == 0777) {
print "Ejecutable para todo el mundo\n";
}
elsif ($permisos == 0666) {
print "Permisos de escritura para todo el mundo\n";
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Lo tienes más detallado
en este hilo.
Más información en tu propio ordenador en
perldoc perlfunc,
y en la Web (
traducido). Busca por 'stat'. O usa
perldoc -f statnoitora-5 escribiste:¿Y para guardar el dueño del archivo, me sirve la forma: $dueñoArchivo = stat($filename)?
No, lo que devuelve stat() es una lista de 13 valores, de los cuales el quinto es el
uid del usuario. El uid es el número de usuario dentro del sistema. Si quieres saber el nombre del usuario a partir del uid, deberás usar la función getpwuid():
Using perl Syntax Highlighting
$nombre = getpwuid($iud);Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Más información en
perldoc -f getpwuid