Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
412 lines (284 sloc) 7.06 KB
0:00:04.029,0:00:08.730
Hola y bienvenidos de vuelta al
canal. Esta vez te voy a mostrar
cómo usar el depurador
0:00:08.730,0:00:10.989
embebido de perl
0:00:10.989,0:00:12.389
como un REPL (Read Eval Print Loop)
0:00:12.389,0:00:15.339
así que en realidad no
es depurar un script de perl
0:00:15.339,0:00:19.559
pero explorar cómo funciona
perl
0:00:19.559,0:00:22.019
así que vamos a la línea
de comandos
0:00:22.019,0:00:24.060
como sabes, puedes escribir
0:00:24.060,0:00:28.079
perl -e 'print 42'
y algo de código de perl
0:00:28.079,0:00:31.939
y si lo ejecutas puedes ver que
se imprimió 42.
0:00:31.939,0:00:35.380
del mismo modo que puedes
darle 1
0:00:35.380,0:00:37.040
como valor
0:00:37.040,0:00:40.660
que es un script vacío
básicamente lo corres, pero no lo hace...
0:00:40.660,0:00:41.770
no pasa nada.
0:00:41.770,0:00:45.090
Pero lo podemos depurar
0:00:45.090,0:00:47.120
con '-d'
0:00:47.120,0:00:52.770
Y después lanzar el depurador pero como también puedes
juntarlo con un flex
0:00:52.770,0:00:57.420
en la línea de comandos, así que la gente
usualmente sólo escribe '-de1'
0:00:57.420,0:00:58.750
y cuando lo corro
0:00:58.750,0:01:04.360
abre el depurador y me deja darle comandos
y ejecutó el
0:01:04.360,0:01:05.540
script vacío y ahora
0:01:05.540,0:01:10.080
podemos teclear cualquier comando de perl
aquí o usar las herramientas del depurador
0:01:10.080,0:01:12.299
por ejemplo, puedo teclear 'print 42'
0:01:12.299,0:01:16.230
e imprime 42.
0:01:16.230,0:01:19.920
o puedo decir que $x es igual a 42
0:01:19.920,0:01:23.940
y asigna el valor 42 a la
variable escalar
0:01:23.940,0:01:24.910
Y puedo usar la
0:01:24.910,0:01:30.660
función 'print' de nuevo para imprimirla
o puedo usar la herramienta embebida
0:01:30.660,0:01:31.830
del depurador que es el comando
0:01:31.830,0:01:36.040
'p' para imprimir el mismo valor
0:01:36.040,0:01:38.950
De la misma forma que asigné el valor
escalar, puedo crear
0:01:38.950,0:01:42.350
un array, así que por
0:01:42.350,0:01:47.210
ejemplo, aquí están los
nombres
0:01:47.210,0:01:48.900
Foo Bar y Baz
0:01:48.900,0:01:52.740
y puedo imprimir los nombres
0:01:52.740,0:01:54.540
con el comando 'print'
0:01:54.540,0:01:57.550
pero obviamente esto no es bastante
bueno. No se ve bien.
0:01:57.550,0:01:58.520
puedo poner
0:01:58.520,0:02:00.659
comillas alrededor
0:02:00.659,0:02:04.420
y se ve un poco mejor porque
ahora hay espacios
0:02:04.420,0:02:08.569
pero una vez que imprimes de esta manera
no es claro si
0:02:08.569,0:02:14.869
@names contiene 3 valores o uno
con espacios entre él
0:02:14.869,0:02:18.290
una manera mejor de ver qué hay
dentro del array
0:02:18.290,0:02:20.489
es usar la herramienta 'x'
0:02:20.489,0:02:22.309
del
0:02:22.309,0:02:24.159
depurador
0:02:24.159,0:02:28.579
y darle una referencia al array.
De esta manera imprimirá
0:02:28.579,0:02:32.429
esto como una referencia, y los
índices y
0:02:32.429,0:02:36.439
los valores. Del mismo modo
puedes hacer un hash
0:02:36.439,0:02:44.799
con un fname 'Foo'
0:02:44.799,0:02:45.949
y un lname 'Bar', digamos
0:02:45.949,0:02:49.089
sólo por la consistencia
0:02:49.089,0:02:53.709
y ahora tenemos un hash
0:02:53.709,0:02:56.250
y podemos imprimir su contenido
0:02:56.250,0:02:58.319
con la misma herramienta, 'x'
0:02:58.319,0:03:00.059
y dirá que es una referencia a un hash
0:03:00.059,0:03:04.649
y las llaves y sus
0:03:04.649,0:03:05.629
valores respectivos.
0:03:05.629,0:03:06.859
0:03:06.859,0:03:09.170
También puedes hacer otras cosas,
por ejemplo
0:03:09.170,0:03:10.419
puedes
0:03:10.419,0:03:13.159
jugar con ... fijarte cómo
0:03:13.159,0:03:16.029
funciona la función push
0:03:16.029,0:03:20.669
por ejemplo push @names, 'Moose'
y después
0:03:20.669,0:03:23.479
regresas
0:03:23.479,0:03:27.659
e imprimes el contenido del array
y ves que de hecho
0:03:27.659,0:03:31.079
este array
0:03:31.079,0:03:34.759
se hizo más largo y ahora tiene el valor 'Moose' dentro.
0:03:34.759,0:03:38.729
Así que puedes explorar código de perl en el
depurador
0:03:38.729,0:03:42.869
y a veces puedes usar los comandos de perl por
sí mismos
0:03:42.869,0:03:44.270
a veces usando las herramientas del depurador
0:03:44.270,0:03:47.089
como 'print' y 'x'
0:03:47.089,0:03:51.399
También puedes usar módulos desde aquí
puedes usar: 'use Cwd'
0:03:51.399,0:03:52.319
por ejemplo
0:03:52.319,0:03:55.040
usará ... cargará este módulo
0:03:55.040,0:03:58.969
con todas las funciones y puedes
llamar la
0:03:58.969,0:04:00.810
función cwd de él
0:04:00.810,0:04:03.109
y obviamente al llamarlo no
0:04:03.109,0:04:06.259
muestra nada porque ejecuta y regresa el valor
0:04:06.259,0:04:09.549
Así que si por ejemplo quieres ver el resultado
de 'p cwd'
0:04:09.549,0:04:14.909
imprime el resultado que es sólo el
directorio de trabajo actual
0:04:14.909,0:04:16.920
podrías haber usado otro módulo
0:04:16.920,0:04:20.069
por ejemplo, Basename
0:04:20.069,0:04:24.150
File::Basename
0:04:24.150,0:04:29.889
y tiene una función 'basename'
0:04:29.889,0:04:33.740
y hay que darle el valor del resultado
de 'cwd'
0:04:33.740,0:04:35.209
0:04:35.209,0:04:39.370
y hay que imprimirlo
0:04:39.370,0:04:40.580
y tengo que
0:04:40.580,0:04:45.530
aprender cómo deletrear y así sólo
imprime el nombre de base
0:04:45.530,0:04:47.090
de esa ruta, que es
0:04:47.090,0:04:50.299
la última parte de una ruta
0:04:50.299,0:04:54.259
pero ¿Qué pasa si quieres ver cómo funciona
esto? entonces puedes poner
0:04:54.259,0:04:55.099
un breakpoint
0:04:55.099,0:04:56.330
en esa función
0:04:56.330,0:04:59.909
así que si pones un breakpoint en el archivo
0:04:59.909,0:05:02.059
File/Basename
0:05:02.059,0:05:03.449
función
0:05:03.449,0:05:04.620
'basename'
0:05:04.620,0:05:09.019
y si lo corro de nuevo, esta es la
letra b
0:05:09.019,0:05:11.050
y si corro este código de nuevo
0:05:11.050,0:05:13.169
entonces se detendrá en el punto donde
0:05:13.169,0:05:14.840
entramos a esa función
0:05:14.840,0:05:18.919
la función 'basename' del archivo
0:05:18.919,0:05:20.169
Basename.pm
0:05:20.169,0:05:25.050
que está implementada en este archivo en la
línea 215
0:05:25.050,0:05:26.740
Puedes echar un vistazo con 'l'
0:05:26.740,0:05:32.889
puedes ver el resto del código o
ver en un rango
0:05:32.889,0:05:35.910
por ejemplo, 200-220
0:05:35.910,0:05:37.789
0:05:37.789,0:05:39.830
y ves
0:05:39.830,0:05:41.590
unas líneas aquí
0:05:41.590,0:05:43.020
que probablemente
0:05:43.020,0:05:47.719
no son parte del código, por lo que no
se imprimen, y la función basename
0:05:47.719,0:05:49.229
y cómo funciona.
0:05:49.229,0:05:51.849
Así que puedes usar básicamente
0:05:51.849,0:05:53.899
cualquier herramienta que quieras
0:05:53.899,0:05:57.569
dentro del depurador y puedes explorar
Perl de esta manera.
0:05:57.569,0:05:59.409
Al final, usar 'q'
0:05:59.409,0:06:01.330
cerrará el depurador.
0:06:01.330,0:06:03.059
Espero que te haya gustado el
0:06:03.059,0:06:04.680
tutorial. Por favor suscríbete
0:06:04.680,0:06:08.460
al canal, y vuelve pronto.
0:06:08.460,0:06:09.280