$#errores -> es el indice de elementos del array @errores (-1 si esta vacio, 0 un elemento, 1 dos elementos,...)
@errores -> es el numero de elementos del array @errores (0 vacio, 1 un elemento, .... ¡ojo!, hay que asignarla a un escalar)
Prueba esto con un fichero que exista y otro que no.
if (open(IN, "fichero")){
...
close(IN);
}
push(@errores, $!);
...
print $#errores;
NOTA: @errores no es una variable de lenguaje, para asegurar esto ejecuta esto:
#!/usr/bin/perl # la primera necesaria para Unix
use strict; # usar package (todas las variables deben estar definidas)
print $#errores;# nos da el error: Global symbol "@errores" requires explicit package name at pp.pl line 3.Execution of pp.pl aborted due to compilation errors.
Espero te quite la duda...