Re: [Grulic-dev] Consulta Perl

Página superior
Adjuntos:
+ (text/plain)

Responder a este mensaje
Autor: Fernando Hevia
Fecha:  
A: 'Lista de desarrollo de software libre'
Asunto: Re: [Grulic-dev] Consulta Perl


> -----Mensaje original-----
> De: grulic-dev-bounces@???
> [mailto:grulic-dev-bounces@???] En nombre de Edgardo Hames
> Enviado el: Martes, 15 de Julio de 2008 20:53
> Para: Lista de desarrollo de software libre
> Asunto: Re: [Grulic-dev] Consulta Perl
>
> 2008/7/15 Fernando Hevia <fhevia@???>:
> >
> > Tengo un parser de archivos de configuración que interpreta
> líneas al
> > estilo
> > de:
> > ID-Server = "appserver1"
> >
> > En el parser, con la siguiente instrucción obtengo el valor
> del campo:
> > $Id-Server = $_ if s/^ID-Server = //;
> >
> > El tema es que se presenta el caso donde en un archivo
> puede variar el
> > nombre del campo (por ejemplo, está en otro idioma):
> > ID-Servidor = "appserver1"
> >
> > Para interpretar ambas líneas en forma indistinta cambié el
> script a
> > lo
> > siguiente:
> >
> > if (s/^ID-Server = //) {
> > $ID-Server = $_;
> > } elsif (s/^ID-Servidor = //) {
> > $ID-Server = $_;
> > };
> >
> > La sintáxis bonita no se ve, si hubiera una solución más
> elegante me
> > gustaría escuchar sus opiniones.
>
> El operador || (doble pipe) y hacer un or entre dos
> expresiones booleanas.
>
> if (s/^ID-Server = // || s/^ID-Servidor = //) { # hacer algo }
>
> El operador | (pipe) te permite hacer un "or" entre
> expresiones regulares.
>
> if (s/^ID-Server = // || s/^ID-Servidor = //) { # hacer algo }
>
> Podrías usar m// en vez de s/// si lo que querés es matchear
> en vez de sustituir y no usar $_ ya que es menos inmediato
> para los que no están acostumbrados a Perl.
>


Gracias Edgardo por tu respuesta.
Reescribí la instrucción a
$Id-Server = $_ if s/^(ID-Server|ID-Servidor) = //;

que es más concisa.

Saludos,
Fernando.