• Publicidad

Buscar y leer variable de un archivo en una línea

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Buscar y leer variable de un archivo en una línea

Notapor rikr000 » 2011-09-02 04:16 @219

Hola,

Estoy intentando leer el valor que tiene asignado la variable btime en el archivo /proc/stat, pero me gustaría hacerlo todo en una línea, sin usar la variable $tmp1, ¿es posible?. Gracias

open(FILE, "< /proc/stat") || return 1;
($tmp1) = grep( { m/btime/ } <FILE>);
close FILE || return 1;
@uptime_date = split (' ', $tmp1, 2);
rikr000
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-09-02 04:13 @217

Publicidad

Re: Buscar y leer variable de un archivo en una línea

Notapor explorer » 2011-09-02 04:29 @228

Bienvenido a los foros de Perl en español, rikr000.

Esta es una forma muy común de hacerlo en Perl (un modismo):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $uptime_date = do { local $/; open F, "/proc/stat"; <F> =~ /btime (\d+)/; $1};
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Buscar y leer variable de un archivo en una línea

Notapor rikr000 » 2011-09-02 04:41 @237

Muchas gracias, ya, para ver si también es posible, ¿se puede asignar el valor a una variable, en vez de un array? Sólo necesito el valor numérico, la línea es así:

btime 1314939856
rikr000
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-09-02 04:13 @217

Re: Buscar y leer variable de un archivo en una línea

Notapor explorer » 2011-09-02 06:11 @299

¡Hecho!
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Buscar y leer variable de un archivo en una línea

Notapor explorer » 2011-09-03 05:08 @256

Esta es otra versión:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. ($uptime_date) = qx(cat "/proc/stat") =~ /btime (\d+)/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Lo que hace es ejecutar en el shell el comando cat, para que saque a la salida estándar el contenido de /proc/stat. Esa salida la pasamos a la expresión regular, por donde buscamos por el número que nos interesa, que es capturado por los paréntesis. Al lado izquierdo hay una lista de variables (bueno, solo una variable). Sabemos que es una lista por la presencia de los paréntesis. Como consecuencia de eso, las capturas de la exp. reg. son devueltas en forma de lista, hacia las variables, con lo que $uptime_date obtiene el valor de $1, la primera (y única) captura.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 23 invitados