[Perl] Creacion de variables

Gabriel Lopez Nunez galo@liceaga.facmed.unam.mx
Thu, 13 Dec 2001 14:45:29 -0600 (CST)


Hola, lo que necesitas usar es "eval", cuya funcion consiste en ejecutar
un bloque de c=F3digo, dentro de otro. Bueno ahi te va como lo har=EDa yo:

 while(<archivo>) {
     chomp;
     eval '$'.$_.'{'.$_.'} =3D "Yo soy '.$_.'";';
     $names[$i++] =3D $_;
 }

a la linea de eval puedes darle un
=09print '$'.$_.'{'.$_.'} =3D "Yo soy '.$_.'";';
para que veas que est=E1 haciendo.

- eval - se encarga de crear las variables de arreglo asociativo que
necesitas, pero como alguna vez dentro del programa tendr=E1s que
recuperarlas y no tendras ni idea de c=F3mo se llaman, me encargo de meter
los nombres en el arreglo - @names -.

Y ya para imprimir vuelvo a pasar eval:

foreach(@names){
  eval '%var =3D %'.$_.';';
  print $var{$_}."\n";
}

Saludos!

----------

On Thu, 13 Dec 2001, [iso-8859-1] Eduardo Martinez wrote:

> Hola a todos.
>=20
> Bueno, directo al grano..
> Tengo un archivo con una lista de nombres, p. ej.
>=20
> luis
> alberto
> raul
> pedro
> arturo
>=20
> Desde un programa en Perl, necesito abrir este archivo y crear un array
> asociativo con el nombre de cada uno de los nombres que aparecen en el
> archivo, es decir que debo tener los arreglos: %luis, %alberto, %raul,
> %pedro, %arturo
> Y se deben crear variables para c/u de los nombres que aparezcan en el
> archivo, de tal manera que si en el futuro se agregan mas nombres, el
> programa cree nuevas variables para cada nombre agregado.
> Intente hacer algo como:
>=20
> while(<archivo>) {
>     $'$_'{'$_'}=3D"algun valor";
> }
>=20
> Pero no funciona.
> =BFAlguien sabe como hacer esto?
>=20
>=20
> =3D=3D=3D=3D=3D
> "Do or Do Not, there is no try"
> -Yoda. The Empire Strikes Back
>=20
> _______________________________________________________________
> Do You Yahoo!?
> Yahoo! Messenger
> Comunicaci=F3n instant=E1nea gratis con tu gente.
> http://messenger.yahoo.es
>=20
>=20
> _______________________________________________
> Perl mailing list
> Perl@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/perl
>=20