La función stat

Si se quiere obtener información más detallada como el número de enlaces a un fichero o el uid del propietario de un fichero es necesario recurrir a la función stat. El operando de stat es un fichero o un nombre de fichero. La función stat devuelve bien una lista vacía (en caso de error) o una lista de 13 elementos (véase la tabla 2.2).


Tabla 2.2: Valores devueltos por stat
0 dev device
1 ino inode
2 mode permisos
3 nlink numero de hard links
4 uid user ID del propietario
5 gid group ID del propietario
6 rdev tipo de dispositivo (ficheros especiales)
7 size tamaño total, en bytes
8 atime Tiempo del último acceso
9 mtime Tiempo de la última modificación
10 ctime Tiempo del último cambio del inodo
11 blksize blocksize para filesystem I/O
12 blocks número de bloques asignados


Los argumentos atime, mtime y ctime indican cuantos segundos han pasado desde el comienzo de 1970 MUT (Midnight Universal Time).

En el siguiente ejemplo, en la línea 1 el uso del operador glob nos permite la expansión de los comodines tipo shell:

  DB<1> @f = glob('xml*')
  DB<2> p "@f"
xml xmlparser.pl xmlparserinput.xml
  DB<3> @a = stat "xmlparser.pl"
  DB<4> x @a
0  2051
1  2171300
2  33261
3  1
4  1007
5  1007
6  0
7  191
8  1112287076
9  1087853581
10  1099385099
11  4096
12  8

La función localtime permite convertir números en formato MUT en una cadena tipo fecha:

  DB<1> @a = stat "xmlparser.pl"
  DB<2> use constant mtime => 9
  DB<3> x $a[mtime]
0  1087853581
  DB<4> p scalar(localtime $a[mtime])
Mon Jun 21 22:33:01 2004

Cuando se llama a stat sobre un enlace simbólico, stat devuelve información sobre el fichero apuntado, no sobre el enlace. Si se trata de un enlace en vez de un fichero, use la función lstat. Si el operando no es un enlace simbólico lstat devuelve la misma información que stat. Cuando no se indica operando, ambos stat y lstat usan la variable por defecto $_.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19