system(), en Perl, devuelve el valor del estatus del resultado de la operación, no la salida de la operación.
Eso lo hace qx():
Código Perl:
Ver originalmy $existe = grep { /$DOMINIO/ } qx(ls
/etc
/awstats
/web
/); if ($existe == 0){
print "NO hay fichero\n"; }
else {
print "EXISTE al menos un fichero\n"; }
(Atención al '=' dentro de la condición: lo tenías puesto como una asignación, por lo que siempre valía 0)
Al asignar la lista de valores que devuelve grep{} a una variable escalar, la lista se convierte en el número de líneas.
Si la función debe devolver un verdadero o falso si hay ficheros o no, te vale con un
o incluso, si sabemos que los ficheros, dentro de /etc/awstats/web/, empiezan por el nombre de cada $DOMINIO, lo siguiente también podría funcionar:
y así, no necesitas ejecutar ningún otro comando externo.