Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/06/2010, 09:21
jferrero
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Cómo hacer esta orden en perl?

Entonces, sería algo así:

Código Perl:
Ver original
  1. $TMP = do { local $/; open $FILE, "</etc/awstats/web/$file"; <$FILE> };
  2. $TMP =~ /^LogFile \s* = \s* " (.*?) "/x;
  3.  
  4. use File::Basename;
  5. $RUTA_FILE = '';
  6. if ($1) {
  7.     $RUTA_FILE = dirname $1;
  8. }

Se puede abreviar un poco, pero más ofuscado.

Código Perl:
Ver original
  1. do { local $/; open $FILE, "</etc/awstats/web/$file"; <$FILE> } =~ /^LogFile \s* = \s* " (.*?) "/x;
  2.  
  3. use File::Basename;
  4. $RUTA_FILE = $1 ? dirname($1) : '';
Utilizamos do{} para hacer la lectura de todo el fichero. Se lo pasamos a una expresión regular, que extrae la información de la entrada LogFile, de lo que hay entre llaves, de la cual extraemos solamente el directorio. Si no encontramos nada en el LogFile, pues obtenemos una cadena vacía.
__________________
JF^D Perl Programming en Español