Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/06/2010, 06:26
jferrero
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Resultado de system() guardarlo en variable?

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 original
  1. my $existe = grep { /$DOMINIO/ } qx(ls /etc/awstats/web/);
  2. if ($existe == 0){
  3.     print "NO hay fichero\n";
  4. }
  5. else {
  6.     print "EXISTE al menos un fichero\n";
  7. }

(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
Código Perl:
Ver original
  1. sub Existe_Awstats {
  2.     return grep { /$DOMINIO/ } qx(ls /etc/awstats/web/);
  3. }

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:
Código Perl:
Ver original
  1. sub Existe_Awstats {
  2.     return </etc/awstats/web/$DOMINIO*>;
  3. }
y así, no necesitas ejecutar ningún otro comando externo.
__________________
JF^D Perl Programming en Español