perl

51
PERL Lenguaje Práctico de Extracción y de Informes

Upload: rasul

Post on 05-Jan-2016

33 views

Category:

Documents


2 download

DESCRIPTION

PERL. L enguaje P ráctico de E xtracción y de I nformes. Introducción. PERL que significa "Practical Extraction and Report Language” Es un lenguaje de programación creado por Larry Wall, surge de otras herramientas Unix. Introducción (Cont.). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PERL

PERL

Lenguaje Práctico de Extracción

y de Informes

Page 2: PERL

Introducción

• PERLPERL que significa "Practical que significa "Practical Extraction and Report Language”Extraction and Report Language”

• Es un lenguaje de programación Es un lenguaje de programación creado por creado por Larry Wall, Larry Wall, surge de surge de otras herramientas Unix.otras herramientas Unix.

Page 3: PERL

Introducción (Cont.)

• Principalmente sirve para labores Principalmente sirve para labores de procesamiento de texto.de procesamiento de texto.

• También sirve para la programación También sirve para la programación de software de sistemasde software de sistemas

• Y últimamente ha encontrado su Y últimamente ha encontrado su aplicación en la escritura de aplicación en la escritura de CGICGI o o scripts ejecutados desde páginas de scripts ejecutados desde páginas de la WWWla WWW.

Page 4: PERL

• PERLPERL es un lenguaje interpretado, aunque es un lenguaje interpretado, aunque internamente funciona como un compilador. internamente funciona como un compilador. Por eso se habla de Por eso se habla de scriptsscripts, y no de , y no de programas.programas.

• Existen actividades en las cuales Existen actividades en las cuales PERLPERL, no es , no es la solución más adecuada, por ejemplo: la solución más adecuada, por ejemplo: sistemas de tiempo real, aplicaciones de sistemas de tiempo real, aplicaciones de memoria compartida de procesos o memoria compartida de procesos o aplicaciones extremadamente largas.aplicaciones extremadamente largas.

Page 5: PERL

Conociendo su sintaxis

• El típico ejemplo de hola mundo!!!El típico ejemplo de hola mundo!!!1: #!/usr/bin/perl

2: print ("Cual es tu nombre?");

3: $nombre=<STDIN>;

4: chop($nombre); # esto es un comentario

5: print "Hola, $nombre!\n";

• OBS.: en PERL no se necesita declarar la variable se crea y se usa, podríamos haber escrito un número igual lo mostraría.

Page 6: PERL

• Los datos pueden ser números y string, al igual Los datos pueden ser números y string, al igual que en C. que en C.

• Para señalar los strings hay dos formas de hacerlo: Para señalar los strings hay dos formas de hacerlo: comillas simples y dobles, se usan igual que en comillas simples y dobles, se usan igual que en Shell.Shell.

Page 7: PERL

Strings :Strings :

• a)a) Concatenación(.): Concatenación(.): Ej:"Hola"."mundo" # "Holamundo”

"juan"." "."pedro" # "juan pedro”

• b)b) Operador de repetición de Operador de repetición de strings(x) :strings(x) :

Ej:"juan"x3 # "juanjuanjuan"

Page 8: PERL

Tipos de variablesTipos de variables

1- Escalares:1- Escalares:Las variables de Las variables de escalaresescalares empiezan por $ empiezan por $• $a = 5; $b ="xxx";

Las instrucciones terminan en punto y Las instrucciones terminan en punto y coma. coma.

Un escalar puede tener números, strings Un escalar puede tener números, strings u otras cosas más complicadas como u otras cosas más complicadas como referencias y descriptores.referencias y descriptores.

• Ej:$a=123; $nombre=“hola2”;

Page 9: PERL

1- Escalares1- Escalares

• Interpolación de variables Interpolación de variables escalares en stringsescalares en strings

Son idénticas que en shell.Son idénticas que en shell.• El valor El valor undefundef (indefinido) (indefinido)

Si usamos una variable antes de Si usamos una variable antes de darle un valor se asignara como cero darle un valor se asignara como cero si es número o " " (vacío) si es como si es número o " " (vacío) si es como string. string.

Page 10: PERL

2- Arreglos2- Arreglos

• Las variables tipo Las variables tipo arreglosarreglos empiezan empiezan por @por @

• @a = (95, 7, 'fff' );• print $a[2]; # imprime el tercer elemento: fff • print @a; # imprime: 9 57 fff separados por

espacios.

• Los valores de los elementos pueden Los valores de los elementos pueden ser de distinto tipo.ser de distinto tipo.

• El largo de un arreglo ( ej : @a ) El largo de un arreglo ( ej : @a ) queda guardado en $#a.queda guardado en $#a.

Page 11: PERL

Si uno accesa un elemento del arreglo Si uno accesa un elemento del arreglo más allá del fin del arreglo el valor más allá del fin del arreglo el valor undefundef es retornado. es retornado.

Asignar un valor a un elemento más Asignar un valor a un elemento más allá del fin del arreglo, lo que hace allá del fin del arreglo, lo que hace es agrandar el arreglo poniendo es agrandar el arreglo poniendo undefundef a los valores intermedios. a los valores intermedios.

Page 12: PERL

Ejemplo de asignación en arreglosEjemplo de asignación en arreglos

• Ej:@a=(1, "yo",3);• @c=@a; # copia el arreglo @a en @c• $d=$a[$#a]; # $d=3• $b=$a[0]; # asigna 1 a $b• $a[1]=5; # ahora @a es (1,5,3)• $a[2]++;

# suma uno al tercer valor de @a siendo ahora (1,5,4)

• $b=$a[7];

# $b es 0 o "" ,dependiendo del contexto• $a[6]="chao";

Page 13: PERL

• Para más operaciones especiales sobre arreglo ver : Más sobre arreglos

Page 14: PERL

3- Hashes o arreglos asociativos3- Hashes o arreglos asociativos

• Las variables de tipo Las variables de tipo hashhash empiezan empiezan por %por %

• Para crear un elemento de un Para crear un elemento de un hashhash se se requiere una lista de 2 valoresrequiere una lista de 2 valores

• El primer elemento es la clave y el El primer elemento es la clave y el segundo es el valorsegundo es el valor%a = ( 'x', 5, 'y', 3);

# llena 2 elementos del hash print $a{'x'}; # imprime: 5

print $a{'y'}; # imprime: 3

Page 15: PERL

• Una forma más clara de ver los pare sería:%a = {'x'=> 5, 'y'=>3};

• Si es un string simple se puede omitir las comillas simples.

• Operaciones especiales sobre hash ver:

Más sobre Hash

Page 16: PERL

Estructuras de ControlEstructuras de Control

• Al igual que en la mayoría de los Al igual que en la mayoría de los lenguajes de programación, en lenguajes de programación, en PERLPERL existen estructuras como existen estructuras como ifif, , forfor, , whilewhile. .

• La sintaxis del La sintaxis del if , for y while if , for y while es la es la misma que en C.misma que en C.

Page 17: PERL

Estructuras de control• Until

La forma del until es : until ( condicion ) {

sentencia;

}

A diferencia del A diferencia del whilewhile el el untiluntil se ejecuta al menos una se ejecuta al menos una vezvez, y se sigue , y se sigue mientrasmientras la condición la condición sea falsosea falso..

• Foreach

El El foreachforeach recibe una lista de valores y asigna cada uno de recibe una lista de valores y asigna cada uno de los valores de la lista a una variable de lectura . La los valores de la lista a una variable de lectura . La estructura del estructura del foreachforeach es : es :

foreach $a ( @alguna_lista ) {

sentencia;

}

• “Todas las estructuras de control necesitaban de llaves, aunque solo fuera una instrucción”

Page 18: PERL

Manejo de ArchivosManejo de Archivos

• Entrada estándar:Entrada estándar:

Como vimos en el primer ejemplo, para leer Como vimos en el primer ejemplo, para leer una línea desde la entrada estándar se debe una línea desde la entrada estándar se debe asignar una variable escalar a <asignar una variable escalar a <STDINSTDIN>>

• Lectura de parámetros pasados a un Lectura de parámetros pasados a un programaprogramaDentro de un programa en Dentro de un programa en PERLPERL los los argumentos que se le pasan quedan argumentos que se le pasan quedan guardados en el arreglo @ARGV.guardados en el arreglo @ARGV.

Page 19: PERL

• Procesamiento de archivosProcesamiento de archivos• Como en todo lenguaje en Como en todo lenguaje en PERLPERL se se

puede trabajar con archivos.puede trabajar con archivos.• Abrir:

open(FILE,"file1.txt");

while ( $a=<FILE> ){

...sentencia..;

}

close(FILE);

Manejo de ArchivosManejo de Archivos

Page 20: PERL

• Escritura: $file='hola.c';

open (A,">$file");

# Abrimos para solo escritura el archivo hola.cprint A "hola\n";

close(A);

• Append : (agregar)@l=('a',"\n",'b',"\n");

open(G,">>/tmp/hola.txt");

# Abrimos para escritura pero, sin borrar el

#contenido solo añadiendo al archivo

print G @l;

close (G);

Una forma más elegante seria usando la Una forma más elegante seria usando la “funcion” “funcion” diedie::

open (A, "file.dat") || die "No se puede abrir\n";

Page 21: PERL

• Inclusion de archivosInclusion de archivos

Al igual que en C, uno puede incluir Al igual que en C, uno puede incluir otro archivo con código otro archivo con código PERLPERL. . Con Con requirerequire incluimos un archivo, el incluimos un archivo, el cual no necesariamente tiene que cual no necesariamente tiene que tener un 'main', es decir pueden ser tener un 'main', es decir pueden ser solo subrutinas.solo subrutinas.

Ej.: #!/usr/bin/perl

require "otroarchiv.pl";

Page 22: PERL

Expresiones regularesExpresiones regulares

• Es una forma general de describir Es una forma general de describir un patrón de caracteres que un patrón de caracteres que queremos buscar en un string. En queremos buscar en un string. En PERLPERL se usa la misma notación se usa la misma notación para expresiones regulares de para expresiones regulares de sedsed y y grepgrep : :

Page 23: PERL

Exp. Reg.Exp. Reg.

• Se usan para indicar que algunas Se usan para indicar que algunas letras se repitenletras se repiten

.(un punto) : Cualquiera excepto el carácter de línea nueva.

+ : Uno o más del carácter anterior(que lo precede).

? : Ninguno o uno del carácter anterior.

* : Ninguno o más del carácter anterior.

^ : Busca la coincidencia sólo al comienzo de la línea.

$ : Busca la coincidencia sólo al final de la línea.

Page 24: PERL

Exp. Reg.Exp. Reg.

Para dar una expresión regular se pasan en '/'. Y para aplicarla a una variable se usa el operador '=~'.

Si anteponemos \ (back slash) a cualquier comodín nos referimos al carácter mismo.

Ejemplos : $a="hola mundo";

$e="chao";

$b= ($a =~ /^he/); # $b vale true = 1

Page 25: PERL

$c= ( "chao" =~ /ah/ ) ; # $c=0

$d= ( "$e" =~ /ah/ ); # $d=0

if ( $a=~ /o$/ )

{ print "Correcto\n"; }

# imprime Correcto

El operador '=~' tiene una opción que El operador '=~' tiene una opción que lo que hace es como el lo que hace es como el sedsed, reemplazar , reemplazar un trozo de texto por otro, esa opción es un trozo de texto por otro, esa opción es la 's' :la 's' :

El formato es $x =~ s/expant/expnueva/ El formato es $x =~ s/expant/expnueva/ ;;

Ej: $cual="este es un test";

$cual =~ s/test/prueba/;

#$cual="este es un prueba"

Page 26: PERL

Más sobre Expr. Reg.Más sobre Expr. Reg.• substitución s///

Ya fue visto anteriormente su explicación.Ya fue visto anteriormente su explicación.

Cuando el escalar es $_ se omite $_ y Cuando el escalar es $_ se omite $_ y =~...=~...

$_ = "abcdef";

/bc/; # es verdadero

s/cd//;

print; # imprime: abef

cuantificadores cuantificadores {3,5} : mínimo 3 y máximo 5 del carácter

anterior

{3,} : mínimo 3 del carácter anterior

{,5} : máximo 5 del carácter anterior

Page 27: PERL

• Clases de caracteres a la medida Clases de caracteres a la medida [abcef] : uno de esas 5 letras

[a-f] : lo mismo que el anterior

[0-9] : es lo mismo que \d

[\t \n] : es lo mismo que \s

[a-zA-Z_] : es lo mismo que \w

@a = ( 1..10);

foreach ( @a )

{

/^[1-3]/

and

print "$_:"; }

Page 28: PERL

Las ExpReg. tienen también Las ExpReg. tienen también opcionesopciones

• /g : indica que haga varios /g : indica que haga varios "match’s""match’s" $_ = "f1=abc test=on";

s/=/ / ; # $_ queda con "f1 abc test=on"

$_ = "f1=abc test=on";

s/=/ /g ; # $_ queda con "f1 abc test on"

$_ = "1995 Renault azul";

@a = /^(\w+)/g; # @a queda con 3 elementos

Page 29: PERL

• /i : ignore mayúsculas y /i : ignore mayúsculas y minúsculasminúsculas

$_ = "Francisco francisco";

s/francisco/pacho/ig;

# $_ queda con "pacho pacho"

• s///e : ejecuta la segunda s///e : ejecuta la segunda expresión y su valor lo utiliza expresión y su valor lo utiliza para remplazar el patrón.para remplazar el patrón.

$_ = "largo= 15";

s/(\d+)/$1 * 4/e;

print; # Imprime: largo= 60

Page 30: PERL

• El operador “tr” se usa para El operador “tr” se usa para traducir caracteres.traducir caracteres.

• Tiene un parecido con la Tiene un parecido con la substitución en ExpRegsubstitución en ExpReg

$a = "f1=abc test=on";

tr/=/ / ;

# $a queda "f1 abc test on"

%x = split / /, $a;

# $x{f1} queda con "abc"

# $x{test} queda con "on";

Page 31: PERL

Funciones en Exp. Reg.Funciones en Exp. Reg.

Split() y Join()Split() y Join() SplitSplit() lo que hace es dado un separador, () lo que hace es dado un separador,

separa un string en un arreglo :separa un string en un arreglo : Ej: $linea="mvargas::117:10:Juan";

@a=split(/:/,$line);

# @a=("mvargas","","117","10","Juan")

JoinJoin() hace lo inverso de Split(), dado un () hace lo inverso de Split(), dado un arreglo lo junta en un string, separado arreglo lo junta en un string, separado por un delimitador especificado. por un delimitador especificado.

Page 32: PERL

SubrutinasSubrutinas

• Al igual que la mayoría de los Al igual que la mayoría de los lenguajes de Programación, lenguajes de Programación, PERLPERL soporta subrutinas, también soporta subrutinas, también conocidas como procedimientos o conocidas como procedimientos o funciones. funciones.

• Con ejemplos, veremos como se Con ejemplos, veremos como se construyen. construyen.

Page 33: PERL

Ejemplo 1Ejemplo 1

sub suma {

local($x,$y)=@_; # En @_ se reciben los parámetros (es por valor)

return($x+$y);

}

$f=8;

$c=&suma(4,$f); # Otra opción sería: $c=&suma(4,$f,'hola'); no se ve # afectado

# $c=12

Page 34: PERL

Ejemplo 2Ejemplo 2

sub duplica() {

$x*=2;

}

$x=8;

&duplicar(); # $x=16, ya que no lo declaramos como

# local en la subrutina => duplica a x

Como vemos el paso de parámetros es Como vemos el paso de parámetros es por referencia, pero al igual que en C, por referencia, pero al igual que en C, los parámetros se pueden modificar, vía los parámetros se pueden modificar, vía punteros:punteros:

Page 35: PERL

Ejemplo 3Ejemplo 3$st='uno:1,dos:2,tres:3';

&crea($st,*a); # cuando la función termina: $a{'uno'}=1, $a{'dos'}=2, $a{'tres'}=3

sub crea {

local($pal,*g)=@_;

local($x,$a,$b);

local(@aux);

@aux=split(/,/,$pal);

for($x=0;$x<=$#aux;$x++)

{

($a,$b)=split(/:/,$aux[$x]);

$g{$a}=$b;

}

}

Page 36: PERL

CGI y PerlCGI y Perl

• CGI (Interfaz de pasarela común) es CGI (Interfaz de pasarela común) es como la puerta de acceso que hay como la puerta de acceso que hay entre una página Web y el servidor entre una página Web y el servidor de Internet donde la página reside.de Internet donde la página reside.

• Cuando un explorador desea algo Cuando un explorador desea algo más que otra página Web o un más que otra página Web o un gráfico desde el servidor, la solicitud gráfico desde el servidor, la solicitud va al CGI para poder ser procesada. va al CGI para poder ser procesada.

Page 37: PERL

PERL y los formulariosPERL y los formularios• La idea básica detrás de un formulario La idea básica detrás de un formulario

es sencilla: pedir información al es sencilla: pedir información al visitante, obtener la información, visitante, obtener la información, después usar la información según después usar la información según sea. La parte delicada de tratar con sea. La parte delicada de tratar con los formularios se maneja entre los formularios se maneja entre bastidores por el código de Perl.bastidores por el código de Perl.

• El programa de procesamiento puede El programa de procesamiento puede ser un URL situado en cualquier parte ser un URL situado en cualquier parte de Internet.de Internet.

Page 38: PERL

Los datos procedentes de un formulario fluyen en una corriente que utiliza un formato especial llamado codificación URL.

Cada campo tiene un atributo NAME (nombre, de forma que puede saberse de dónde proceden los datos) y un atributo VALUE (valor, contenido del campo). La cadena enviada por el explorador empareja cada NAME del formulario con su VALUE y los conecta con un signo igual:

NAME=VALUE.

Page 39: PERL

La pareja NAME/VALUE es la La pareja NAME/VALUE es la construcción básica de datos de los construcción básica de datos de los formularios y de los programas de formularios y de los programas de procesamiento de formularios.procesamiento de formularios.

Métodos de envío: GET y POST:

El método GETEl método GET, el explorador , el explorador empaqueta los datos del formulario y empaqueta los datos del formulario y los agrega al final de una solicitud de los agrega al final de una solicitud de aspecto normal para un URL.aspecto normal para un URL.

Page 40: PERL

El método POSTEl método POST codificará los datos codificará los datos de la misma forma, pero los envía de la misma forma, pero los envía directamente al programa directamente al programa CGICGI a través de a través de STDINSTDIN. El método . El método POSTPOST usa la variable de usa la variable de entorno entorno CONTENT_LENGHTCONTENT_LENGHT (longitud del (longitud del contenido) para decirle al servidor cuántos contenido) para decirle al servidor cuántos bytes debe leer desde bytes debe leer desde STDINSTDIN..

La corriente de datos puede ser tan La corriente de datos puede ser tan larga como se necesite, cosa que no ocurre larga como se necesite, cosa que no ocurre con el método con el método GETGET que dependiendo del que dependiendo del servidor se permitirán cadenas más o servidor se permitirán cadenas más o menos cortas. Está limitación hace que menos cortas. Está limitación hace que POSTPOST sea el método más utilizado. sea el método más utilizado.

Page 41: PERL

Variables de entorno Variables de entorno (CGI)(CGI)

• Las funciones y los procesos de un Las funciones y los procesos de un servidor pasan datos entre sí a servidor pasan datos entre sí a través de variables de entorno. través de variables de entorno.

• Las variables Las variables CGICGI de mayor de mayor importancia para comprender el importancia para comprender el proceso de comunicación proceso de comunicación explorador/servidor se describen explorador/servidor se describen en la tabla siguiente:en la tabla siguiente:

Page 42: PERL

Variables de entorno CGIVariables de entorno CGI

QUERY_STRING Datos de entrada que se agregan a URLpara un método GET.

REQUEST_METHOD Expresa el método usado: GET o POST.

CONTENT_LENGHT Número de bytes de la corriente de datosa leer para una solicitud con el métodoPOST.

Page 43: PERL

Más sobre formularios HTMLMás sobre formularios HTML

• <FORM>...</FORM>.Define el comienzo y Define el comienzo y final de un formulario.final de un formulario.

• ACTION="URL". Es el nombre del archivo Es el nombre del archivo del script o del programa que manejará del script o del programa que manejará los datos desde un formulario.los datos desde un formulario.

• METHOD="GET" o "POST". Así se indica cómo Así se indica cómo se mueven los datos desde el se mueven los datos desde el formulario hasta el script que los formulario hasta el script que los maneja. maneja.

Page 44: PERL

Operaciones sobre arreglosOperaciones sobre arreglos

• Push y PopPush y PopUna común utilización de los arreglos es como sUna común utilización de los arreglos es como stackstacks, donde los , donde los nuevos valores son agregados y borrados por el lado derecho del nuevos valores son agregados y borrados por el lado derecho del arreglo. arreglo. Push()Push() es utilizado para agregar elementos y es utilizado para agregar elementos y PopPop() para () para sacar.sacar.

• Shift y Unshift()Shift y Unshift()Al igual que Al igual que PopPop y y PushPush estos sacan y meten elementos en un estos sacan y meten elementos en un

arreglo, pero lo hacen por el lado izquierdo.arreglo, pero lo hacen por el lado izquierdo. • Splice Splice

SpliceSplice permite extraer un subarreglo y modificar a la vez el permite extraer un subarreglo y modificar a la vez el arreglo originalarreglo original

“Volver”

Page 45: PERL

Operaciones sobre arreglos (Cont.)Operaciones sobre arreglos (Cont.)

• ChopChop TTrabaja igual que en variables escalares, le saca el último rabaja igual que en variables escalares, le saca el último

carácter a cada elemento del arreglo. Se usa para eliminar el carácter a cada elemento del arreglo. Se usa para eliminar el retorno de carro de la entrada estándar.retorno de carro de la entrada estándar.

• Shift y Unshift()Shift y Unshift() Al igual que Al igual que PopPop y y PushPush estos sacan y meten elementos en un estos sacan y meten elementos en un

arreglo, pero lo hacen por el lado izquierdo.arreglo, pero lo hacen por el lado izquierdo. • Splice Splice

SpliceSplice permite extraer un subarreglo y modificar a la vez el permite extraer un subarreglo y modificar a la vez el arreglo originalarreglo original

“Volver”

Page 46: PERL

Más sobre HashMás sobre Hash

• Una forma de agregar puede ser la Una forma de agregar puede ser la siguiente:siguiente:

$a{fac}=3456;

• La función La función deletedelete sirve para borrar un sirve para borrar un elemento elemento delete $a{ope};

• La función La función keyskeys crea un arreglo con crea un arreglo con las claves de un las claves de un hashhash

%a = ( x => 5, y => 3, z => 'abc' );

@b = keys %a

“ Volver ”

Page 47: PERL

Cont. HashCont. Hash

• La función La función valuesvalues devuelve un devuelve un arreglo con los valores del arreglo con los valores del hashhash

• La función La función existsexists prueba si existe prueba si existe la clave en el la clave en el hash, hash, el resultado el resultado seria “1” si ésta estuviera.seria “1” si ésta estuviera.

“Volver”

Page 48: PERL

Variables especialesVariables especiales

• $_ Almacena la línea completa que Almacena la línea completa que ha sido leído.ha sido leído.$` Almacena la parte situada a la Almacena la parte situada a la izquierda de un modelo.izquierda de un modelo.$' Almacena la parte situada a la Almacena la parte situada a la derecha de un modelo.derecha de un modelo.$& Almacena la parte propia del Almacena la parte propia del modelo encontrado.modelo encontrado.

Page 49: PERL

BibliografíaBibliografía

• Teach yorself Perl 5 in 21 Days autor: David Till

• Creating Cool WEB pages with Perl

autor: Jerry Muelver

• Curso de Perl autor: Mauricio Vasquez M.

Disponible en: http://www.geocities.com/SiliconValley/Station/8266/perl/

Page 50: PERL

Páginas Web’s recomendadasPáginas Web’s recomendadas

• http://www.perl.com (Página Oficial)

• http://usuarios.lycos.es/asualam/perl/

• http://members.tripod.com/~MoisesRBB/perl.html

• http://www.perl.org

Page 51: PERL

ConclusionesConclusiones• Con este trabajo se trato de aprender un Con este trabajo se trato de aprender un

nuevo lenguaje de programación, Perl, el nuevo lenguaje de programación, Perl, el cual es muy útil para interactuar con una cual es muy útil para interactuar con una pagina Web, aunque se deba tener pagina Web, aunque se deba tener permisos “especiales”, como es usar CGI permisos “especiales”, como es usar CGI por estar dentro de una red de por estar dentro de una red de computadores.computadores.

• Este nuevo lenguaje se utiliza mucho en Este nuevo lenguaje se utiliza mucho en los servidores de paginas Web donde se los servidores de paginas Web donde se interactúa con el usuario.interactúa con el usuario.

• Espero que esta presentacion haya Espero que esta presentacion haya inicializado el aprender sobre este inicializado el aprender sobre este lenguaje y su utilización en la interacción lenguaje y su utilización en la interacción cliente / pagina Web.cliente / pagina Web.