SlideShare una empresa de Scribd logo
1 de 74
Descargar para leer sin conexión
Programación en Perl
  para administradores de sistemas
¿Qué necesitamos?
Intérprete:

   Linux: viene por defecto en todas las distribuciones

   Unix: ...cualquier sistema UNIX que se precie lo incluye

   Mac: viene en el sistema (como buen UNIX que es).
   Alternativas

       macports: http://goo.gl/k5HnD

       Active Perl: http://goo.gl/V8R3h

   Windows:

       Active Perl: http://goo.gl/V8R3h

       Cygwin: http://goo.gl/czYc5
¿Qué necesitamos?
IDE:

   Plugin de eclipse: http://goo.gl/RnAvo

   Komodo (Comercial): http://goo.gl/rtnEi

   Komodo Edit (open source): http://goo.gl/m1d0c

   padre (linux y windows, en mac la instalación se puede
   complicar por necesitarse un entorno de 32 bits): http://
   goo.gl/jh6ca

   vi, emacs, joe, gedit, kate... o cualquier editor de texto de
   UNIX que soporte resaltado de sintaxis.

   más información: perlfaq3 (http://goo.gl/QkJLL)
Nota curiosa: asemejar
                                                    la sintaxis de perl con las



     ¿Perl es fácil o difícil?
                                                    contracciones en inglés.




 Perl es fácil de usar, pero “difícil” de aprender
  while (<>) {
      chomp;
      print join("t", (split /:/)[0, 2, 1, 5] ), "n";
  }


Una vez se maneja la sintaxis es un lenguaje muy
                  productivo:
con pocas líneas de texto se consiguen muchos
                  resultados
¿Cuándo usar perl?
Vale para todo:

   Desde pequeños prototipos o programas “rápidos” escritos
   en 5 minutos

   Hasta grandes proyectos que impliquen a varios
   programadores.

Es la mejor herramienta para problemas en los que haya que
trabajar con texto el 90% del tiempo y un 10% en el resto.

En su día era el motor de las webs dinámicas (que se
ajustan a la perfección al caso anterior)
¿Cuándo no usarlo?

Si el software a distribuir no se puede
distribuir con código fuente:
No se pueden generar binarios.

Si no quieres que tus colegas te miren raro...
Nuestro primer programa
 Abrimos nuestro editor de texto/IDE y escribimos

     1.#!/usr/bin/perl

     2.print "Mi primer programan";




Línea 1: indica al intérprete qué ejecutable usar para
interpretar el programa

Línea 2: imprime por pantalla
Ejecutando el programa

 A través de nuestro IDE, si lo soporta

 Usando la línea de comandos:

   perl miscript.pl

   chmod +x miscript.pl
   ./miscript.pl

      Esta forma sólo funciona si el script
      contiene la línea #!/usr/bin/perl
...y ahora lo escribimos en
            perl
1.#!/usr/bin/perl

2.use 5.010;

3.say "Hello World!";




    línea 2: forzamos el uso de una versión determinada
    de perl (5.10)

    línea 3: usamos la función “say” (disponible en 5.10)
    porque es más concisa (escribimos menos)
Un script que hace “algo”
1.#!/usr/bin/perl

2.@lines = `perldoc -u -f atan2`;

3.foreach (@lines) {

4.    s/w<([^>]+)>/U$1/g;

5.    print;

6.}




         ...no te preocupes si no lo entiendes

                ¡para eso estamos aquí!
http://www.marcports.org          http://www.activestate.com/activeperl    http://www.cygwin.com               http://www.epic-ide.org




                                                                                 http://padre.perlide.org   http://perldoc.perl.org/perlfaq.html#the-
http://www.activestate.com/komodo-ide   http://www.activestate.com/komodo-edit
                                                                                                            perlfaq3-manpage%3a-Programming-Tools
Escalares
Escalares

Tipo de dato más simple que podemos encontrar
en perl
Escalares

Tipo de dato más simple que podemos encontrar
en perl

Sirve para almacenar “una unidad algo”
Escalares

Tipo de dato más simple que podemos encontrar
en perl

Sirve para almacenar “una unidad algo”

La mayoría de escalares son números o cadenas
de caracteres.
Escalares

Tipo de dato más simple que podemos encontrar
en perl

Sirve para almacenar “una unidad algo”

La mayoría de escalares son números o cadenas
de caracteres.

Sí, en perl no hay mucha diferencia entre una
cadena y un número y el intérprete puede usarlos
indistintamente en casi todos los contextos.
Escalares: números
Escalares: números


Definición de literal: cómo se representa un
valor en el código fuente de perl.
Escalares: números


Definición de literal: cómo se representa un
valor en el código fuente de perl.

Perl almacena los números internamente
siempre como “double”, no existe el entero
internamente en perl.
Escalares: números

Literales en coma flotante

  1.25

  7.25e45

  -15e-10

  -1.2E23
Escalares: números

Literales de entero

  0

  2011

  -40

  8817264612412
  Este número es un poco difícil de leer
  ¿verdad?
Acordarse más adelante
                                       de decir porqué no



  Escalares: números
                                       podemos usar la coma
                                       para separar grupos de
                                       números.




Literales de entero

  0

  2011

  -40

  8_817_264_612_412
  Así es más claro. Más adelante veremos
  porqué no podemos usar la coma
Escalares: números
Escalares: números
Números en hexadecimal:

   0xD4F3

   0x1377_0B77
Escalares: números
Números en hexadecimal:

   0xD4F3

   0x1377_0B77

Números en octal:

   0377
Escalares: números
Números en hexadecimal:

   0xD4F3

   0x1377_0B77

Números en octal:

   0377

Números en binario:

   0b111101101

   0b111_101_101
Escalares: números
Operadores:

   2+3

   5.1 - 2.4

   3 * 12

   14 / 2

   10.2 / 0.3

   10 % 3 (Resto de la división entera = 1)

   10.5 % 3.2 (se calcula como 10 % 3)

   2**3 (2 al cubo = 8)
Tal y como dice el libro,
                                        podríamos coger un



  Escalares: cadenas
                                        binario, meterlo en un
                                        escalar como una cadena
                                        de texto, modificarlo y
                                        guardarlo a disco.
                                        ¿Tenemos un ejemplo de
                                        esto en algún lado?




Una cadena es una secuencia de caracteres, por
ejemplo:

  hola

  ☃★๛

Cadena más corta: cadena vacía

Cadena más larga: la que soporte nuestra
memoria ¡no hay límite a nivel del intérprete!
Escalares: cadenas

Perl soporta unicode.

No activo por defecto por compatibilidad con
scripts más antiguos.

Para activarlo, utilizar el siguiente pragma al
inicio de nuestros scripts:

   use utf8

El fichero tiene que almacenarse en utf8/unicode
Escalares: cadenas
Literales de cadena en perl usando comillas simples:

   ‘hola’

   ‘’ -> cadena vacía

   ‘Cadena con dos ‘apostrofos’ dentro’

   ‘Cadena con una  barra invertida’

   ‘Cadena con un
   retorno de carro’ (contiene 30
   caracteres)
Escalares: cadenas
Literales de cadena en perl usando comillas dobles:

   “hola”

   “” -> cadena vacía

   “Cadena con dos ”comillas” dentro”

   “Cadena con ‘comillas simples’ dentro“

Las comillas dobles expanden los caracteres de escape:

   “holata todos” ->tabulador

   “hola a todosn”

   “x{2668}”
Escalares: cadenas
Escalares: cadenas
n Newline

r Return

t Tab

f Formfeed

b Backspace

a Bell

e Escape (ASCII escape character)

007 Any octal ASCII value (here, 007 =
bell)

x7f Any hex ASCII value (here, 7f =
delete)

x{2744} Any hex Unicode code point
(here, U+2744 = snowflake)
Escalares: cadenas
n Newline                                cC A “control” character (here, Ctrl-C)

r Return                                  Barra invertida

t Tab                                    “ Comilla doble
f Formfeed                               l Siguiente letra en minúscula
b Backspace                              L Todas las siguientes letras en minúscula
a Bell
                                          hasta que se encuentre E

e Escape (ASCII escape character)        u Siguiente letra en mayúscula

007 Any octal ASCII value (here, 007 =   U Todas las siguientes letras en mayúscula
bell)                                     hasta que se encuentre E

x7f Any hex ASCII value (here, 7f =      Q Escapa todo lo que no sea una letra
delete)                                   añadiendo una barra invertida hasta que se
                                          encuentre E
x{2744} Any hex Unicode code point
(here, U+2744 = snowflake)                 E Finaliza L, U, or Q
Escalares: cadenas

    Las comillas dobles interpolan variables

1.#!/usr/bin/perl

2.use 5.010;
3.use utf8;

4.$saludo = 'Hola';

5.say "$saludo a todos";

------

Salida: Hola a todos
Escalares: operadores de
        cadenas
Escalares: operadores de
        cadenas
 Concatenación: · (punto)

   “hola” . ‘ a todos’

   “hola a todos” . “n”
Escalares: operadores de
        cadenas
 Concatenación: · (punto)

   “hola” . ‘ a todos’

   “hola a todos” . “n”

 Repetición de cadena

   “Cadena”x3 -> devuelve CadenaCadenaCadena
Escalares: operadores de
        cadenas
 Concatenación: · (punto)

    “hola” . ‘ a todos’

    “hola a todos” . “n”

 Repetición de cadena

    “Cadena”x3 -> devuelve CadenaCadenaCadena

 ¿Qué devuelve lo siguiente?

    5x4.8
Escalares: operadores de
        cadenas
 Concatenación: · (punto)

    “hola” . ‘ a todos’

    “hola a todos” . “n”

 Repetición de cadena

    “Cadena”x3 -> devuelve CadenaCadenaCadena

 ¿Qué devuelve lo siguiente?

    5x4.8 -> 5555
Escalares: conversión
 automática de tipos
¿porqué 5x4.8 devuelve 5555?

   Para perl no hay mucha diferencia entre 5 y “5” a la hora de
   almacenar. La distinción se hace a la hora de “usar” el literal.

   x es un operador de cadena, y espera dos argumentos:

      una cadena a la izquierda

      un entero a la derecha

   por lo tanto, convertirá el primer operando a una cadena y el
   segundo a un entero

   lo hace el sólo, nosotros no tenemos que preocuparnos de
   hacer la conversión de tipos
Escalares: conversión
 automática de tipos
un pequeño test:
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;
     say “5” + 24;
      say 7 . 34;
       say 7.34;
    say “hola” * 3;
say 6 * “12 es docena”;
  say “1.67” * “100”;
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;       36
     say “5” + 24;        29
      say 7 . 34;
       say 7.34;
    say “hola” * 3;
say 6 * “12 es docena”;
  say “1.67” * “100”;
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;        36
     say “5” + 24;         29
      say 7 . 34;         734
       say 7.34;
    say “hola” * 3;
say 6 * “12 es docena”;
  say “1.67” * “100”;
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;        36
     say “5” + 24;         29
      say 7 . 34;         734
       say 7.34;          7.34
    say “hola” * 3;
say 6 * “12 es docena”;
  say “1.67” * “100”;
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;            36
     say “5” + 24;             29
      say 7 . 34;             734
       say 7.34;              7.34
    say “hola” * 3;       0 (número)
say 6 * “12 es docena”;
  say “1.67” * “100”;
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;            36
     say “5” + 24;             29
      say 7 . 34;             734
       say 7.34;              7.34
    say “hola” * 3;       0 (número)
say 6 * “12 es docena”;        72
  say “1.67” * “100”;
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;            36
     say “5” + 24;             29
      say 7 . 34;             734
       say 7.34;              7.34
    say “hola” * 3;       0 (número)
say 6 * “12 es docena”;        72
  say “1.67” * “100”;         167
    say ‘0xF’ * 10;
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;            36
     say “5” + 24;             29
      say 7 . 34;             734
       say 7.34;              7.34
    say “hola” * 3;       0 (número)
say 6 * “12 es docena”;        72
  say “1.67” * “100”;         167
    say ‘0xF’ * 10;       0 (número)
Escalares: conversión
        automática de tipos
      un pequeño test:

    say “12” * “3”;            36
     say “5” + 24;             29
      say 7 . 34;             734
       say 7.34;              7.34
    say “hola” * 3;       0 (número)
say 6 * “12 es docena”;        72
  say “1.67” * “100”;         167
    say ‘0xF’ * 10;       0 (número)
Escalares: warnings

Se pueden activar de dos maneras:

  use warnings; (sólo a partir de 5.6)

  #!/usr/bin/perl -w

  perl -w script.pl

La primera tiene la ventaja de que se activan
sólo para el fichero en la que usa el pragma.
Las otras dos se activan para todos los guiones.
Escalares: warnings


say “5” + 3; -> no genera un warning

say “5 manzanas” + 3 -> genera un
warning
  Argument "5 manzanas" isn't numeric in addition
  (+) at warnings.pl line 12 (#1)
Escalares: warnings
¿y si el warning no es suficiente?

   use diagnostics

   perl -Mdiagnostics script.pl

   Argument "5 manzanas" isn't numeric in addition (+) at diagnostics.pl
   line 12 (#1)
       (W numeric) The indicated string was fed as an argument to an
       operator that expected a numeric value instead. If you're
       fortunate the message will identify which operator was so
       unfortunate.


http://perldoc.perl.org/perldiag.html tiene toda la
documentación sobre los errores
Escalares: variables
Escalares: variables
Almacenan un escalar
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:

   $nombre
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:

   $nombre

   $_nombre
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:

   $nombre

   $_nombre

   $apellido1
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:

   $nombre

   $_nombre

   $apellido1

   $nombre_y_apellidos_del_usuario
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:

   $nombre

   $_nombre

   $apellido1

   $nombre_y_apellidos_del_usuario

   $2nombres -> MAL
Escalares: variables
Almacenan un escalar

Comienzan por $ seguido de un identificador:

   $nombre

   $_nombre

   $apellido1

   $nombre_y_apellidos_del_usuario

   $2nombres -> MAL

   $años -> correcto si se utiliza use utf8;
Escalares: variables

Asignando valores:

  $nombre = ‘Luis’;

  $edad = 25;

  $decenios = int $edad/10;

  $usuario = $nombre . ‘ ‘ . $apellidos;
Escalares: variables
Imprimiendo variables:

   say $nombre

   say “$nombre” -> se prefiere la primera ¡hay que
   escribir menos!

   say “$nombre nació en $año”;

   $singular = “dedo”;

   say “$singulars”; -> no funciona

   say “${singular}s” ->este sí
Escalares: comparación

 Operación      Número   Cadena
    Igual         ==       eq
  Distinto        !=       ne
 Menor que        <        lt
 Mayor que        >        gt
Menor o igual     <=       le
Mayor o igual     >=       ge
Escalares: precedencia de
       operadores
    http://perldoc.perl.org/perlop.html
Escalares: if
1.if ($nombre gt 'luis') {

2.    print "'$name' va después que 'luis'.n";

3.} else {

4.    print "'$name' o va antes que luis 'fred'.n";
5.    print "o es la misma cadenan";

6.}
Escalares: verdadero o
         falso
Si el escalar es el número 0 es falso, cualquier
otro número es verdadero

Si el escalar es una cadena vacía, es falso,
cualquier otra cadena es verdadero

Si no es un número o una cadena, convertirlo a
cadena o número y volver a intentarlo

Nota: la única cadena que se convierte a falso,
además de la cadena vacía es ‘0’
Escalares: entrada

Para leer la entrada estándar usamos el
operador <STDIN>

Se puede usar en cualquier lugar en el que perl
espere un escalar.

Perl sustituirá el operador <STDIN> por la
entrada estándar

  $linea = <STDIN>
Escalares: chomp

    Toma una cadena como argumento y elimina el
    retorno de carro (n)

1.$text = "a line of textn";

2.chomp($text);
Escalares: while
1.$contador = 0;

2.while ($contador < 10) {

3.    $contador += 2;

4.    print "Contador vale $contadorn";# devuelve 2 4 6 8 10

5.}




El cuerpo del bucle se evalúa cuando la condición
                  es verdadera
Escalares: until
1.$contador = 0;

2.untill ($contador == 10) {

3.    $contador += 2;

4.    print "Contador vale $contadorn";# devuelve 2 4 6 8 10

5.}




El cuerpo del bucle se evalúa cuando la condición
                     es falsa
Ejercicios
1. Escribe un programa que calcule el perímetro de una circunferencia de radio 12.5. El
   perímetro es 2π veces el radio (π = 3.141592654). La respuesta debe estar entorno a
   78.5.
2. Modificar el programa anterior para que el usuario pueda introducir el radio de la
   circunferencia.
3. Modificar el programa anterior de forma que, si el usuario introduce un número
   negativo, el perímetro sea cero.
4. Escribe un programa que lee dos números (en dos líneas de texto separadas) y calcula
   el producto.
5. Escribe un programa que lea una cadena y un número y muestre la cadena repetida en
   tantas líneas como el número que haya introducido el usuario. Si se introduce Luis y 3
   se devolverán tres líneas en las que pone “Luis”. Si se introduce “Luis” y 789979 saldrán
   muchas líneas

Más contenido relacionado

La actualidad más candente (17)

Introducción a Ruby on Rails
Introducción a Ruby on RailsIntroducción a Ruby on Rails
Introducción a Ruby on Rails
 
Javascript
JavascriptJavascript
Javascript
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Comandos
ComandosComandos
Comandos
 
Tutorial de php
Tutorial de phpTutorial de php
Tutorial de php
 
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
 
Estructura Básica de PHP
Estructura Básica de PHPEstructura Básica de PHP
Estructura Básica de PHP
 
Java 7- Java Day Guatemala
Java 7- Java Day GuatemalaJava 7- Java Day Guatemala
Java 7- Java Day Guatemala
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_
 
Practica 1
Practica 1Practica 1
Practica 1
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
Los scripts de linux
Los scripts de linuxLos scripts de linux
Los scripts de linux
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
bibliotecas c++
bibliotecas c++bibliotecas c++
bibliotecas c++
 

Destacado

CTET 20th September 2015 Paper-2 Answer Key by Success Mantra
CTET 20th September 2015 Paper-2 Answer Key by Success MantraCTET 20th September 2015 Paper-2 Answer Key by Success Mantra
CTET 20th September 2015 Paper-2 Answer Key by Success MantraSuccessMantraInstitute
 
La Infografía como Recurso Educativo para trabajar las Competencias en el aul...
La Infografía como Recurso Educativo para trabajar las Competencias en el aul...La Infografía como Recurso Educativo para trabajar las Competencias en el aul...
La Infografía como Recurso Educativo para trabajar las Competencias en el aul...Rocío González
 
CTET 20th September Paper-2 2015 Answer Key by Success Mantra
CTET 20th September Paper-2 2015 Answer Key by Success MantraCTET 20th September Paper-2 2015 Answer Key by Success Mantra
CTET 20th September Paper-2 2015 Answer Key by Success MantraSuccessMantraInstitute
 
Innovando en clase
Innovando en claseInnovando en clase
Innovando en claseFranco Mana
 
Contribución de la planeación al proceso de formación de investigadores en in...
Contribución de la planeación al proceso de formación de investigadores en in...Contribución de la planeación al proceso de formación de investigadores en in...
Contribución de la planeación al proceso de formación de investigadores en in...Academia de Ingeniería de México
 
Currículo Nacional de la Educación Básica
Currículo Nacional de la Educación BásicaCurrículo Nacional de la Educación Básica
Currículo Nacional de la Educación BásicaDiego Ponce de Leon
 
Actualiteiten ICT Contracten en Partnerships (2012)
Actualiteiten ICT Contracten en Partnerships (2012)Actualiteiten ICT Contracten en Partnerships (2012)
Actualiteiten ICT Contracten en Partnerships (2012)Advocatenkantoor LEGALZ
 
Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)Zacatecas TresPuntoCero
 
De Reis van de Heldin december 2015
De Reis van de Heldin december 2015De Reis van de Heldin december 2015
De Reis van de Heldin december 2015Peter de Kuster
 
Wal Mart México 2009: lo barato sale caro
Wal Mart México 2009: lo barato sale caroWal Mart México 2009: lo barato sale caro
Wal Mart México 2009: lo barato sale caroPedro Guadiana
 
Error messages
Error messagesError messages
Error messagesrtinkelman
 
Análisis situacional integral de salud final
 Análisis situacional integral de salud final Análisis situacional integral de salud final
Análisis situacional integral de salud finalEstefanía Echeverría
 
Portafolio de Evidencias de mi Práctica Docente
Portafolio de Evidencias de mi Práctica DocentePortafolio de Evidencias de mi Práctica Docente
Portafolio de Evidencias de mi Práctica DocenteNorma Vega
 
Implementación de la Administración de Integridad de ductos en México
Implementación de la Administración de Integridad de ductos en MéxicoImplementación de la Administración de Integridad de ductos en México
Implementación de la Administración de Integridad de ductos en MéxicoAcademia de Ingeniería de México
 

Destacado (20)

CTET 20th September 2015 Paper-2 Answer Key by Success Mantra
CTET 20th September 2015 Paper-2 Answer Key by Success MantraCTET 20th September 2015 Paper-2 Answer Key by Success Mantra
CTET 20th September 2015 Paper-2 Answer Key by Success Mantra
 
La Infografía como Recurso Educativo para trabajar las Competencias en el aul...
La Infografía como Recurso Educativo para trabajar las Competencias en el aul...La Infografía como Recurso Educativo para trabajar las Competencias en el aul...
La Infografía como Recurso Educativo para trabajar las Competencias en el aul...
 
CTET 20th September Paper-2 2015 Answer Key by Success Mantra
CTET 20th September Paper-2 2015 Answer Key by Success MantraCTET 20th September Paper-2 2015 Answer Key by Success Mantra
CTET 20th September Paper-2 2015 Answer Key by Success Mantra
 
Innovando en clase
Innovando en claseInnovando en clase
Innovando en clase
 
Contribución de la planeación al proceso de formación de investigadores en in...
Contribución de la planeación al proceso de formación de investigadores en in...Contribución de la planeación al proceso de formación de investigadores en in...
Contribución de la planeación al proceso de formación de investigadores en in...
 
Control
ControlControl
Control
 
Currículo Nacional de la Educación Básica
Currículo Nacional de la Educación BásicaCurrículo Nacional de la Educación Básica
Currículo Nacional de la Educación Básica
 
Actualiteiten ICT Contracten en Partnerships (2012)
Actualiteiten ICT Contracten en Partnerships (2012)Actualiteiten ICT Contracten en Partnerships (2012)
Actualiteiten ICT Contracten en Partnerships (2012)
 
Revista convives n 6 marzo 2014 0
Revista convives n 6 marzo 2014 0Revista convives n 6 marzo 2014 0
Revista convives n 6 marzo 2014 0
 
Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)
 
"Protección de la salud mental luego del terremoto y tsunami del 27 de febrer...
"Protección de la salud mental luego del terremoto y tsunami del 27 de febrer..."Protección de la salud mental luego del terremoto y tsunami del 27 de febrer...
"Protección de la salud mental luego del terremoto y tsunami del 27 de febrer...
 
Relatietips
RelatietipsRelatietips
Relatietips
 
De Reis van de Heldin december 2015
De Reis van de Heldin december 2015De Reis van de Heldin december 2015
De Reis van de Heldin december 2015
 
Wal Mart México 2009: lo barato sale caro
Wal Mart México 2009: lo barato sale caroWal Mart México 2009: lo barato sale caro
Wal Mart México 2009: lo barato sale caro
 
Error messages
Error messagesError messages
Error messages
 
Análisis situacional integral de salud final
 Análisis situacional integral de salud final Análisis situacional integral de salud final
Análisis situacional integral de salud final
 
Portafolio de Evidencias de mi Práctica Docente
Portafolio de Evidencias de mi Práctica DocentePortafolio de Evidencias de mi Práctica Docente
Portafolio de Evidencias de mi Práctica Docente
 
Geheugen verbeteren
Geheugen verbeterenGeheugen verbeteren
Geheugen verbeteren
 
De impact van adhd
De impact van adhdDe impact van adhd
De impact van adhd
 
Implementación de la Administración de Integridad de ductos en México
Implementación de la Administración de Integridad de ductos en MéxicoImplementación de la Administración de Integridad de ductos en México
Implementación de la Administración de Integridad de ductos en México
 

Similar a Perl1 escalares

Similar a Perl1 escalares (20)

Shell script
Shell scriptShell script
Shell script
 
Tema7 php
Tema7 phpTema7 php
Tema7 php
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Script presentacion
Script presentacionScript presentacion
Script presentacion
 
Informe tecnico u4 final
Informe tecnico u4 finalInforme tecnico u4 final
Informe tecnico u4 final
 
Taller de Pascal 01.pptx
Taller de Pascal 01.pptxTaller de Pascal 01.pptx
Taller de Pascal 01.pptx
 
Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
4072954.ppt
4072954.ppt4072954.ppt
4072954.ppt
 
Creacion de scripts en linux
Creacion de scripts en linuxCreacion de scripts en linux
Creacion de scripts en linux
 
Introducción a php
Introducción a phpIntroducción a php
Introducción a php
 
Ruby
Ruby Ruby
Ruby
 
EXPO PERL UTT
EXPO PERL UTTEXPO PERL UTT
EXPO PERL UTT
 
Curso php-my sql-clase-4
Curso php-my sql-clase-4Curso php-my sql-clase-4
Curso php-my sql-clase-4
 
Php
PhpPhp
Php
 
Java world
Java worldJava world
Java world
 
Java
JavaJava
Java
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
 

Más de Alfonso Alba

Bienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core DataBienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core DataAlfonso Alba
 
Persistencia de datos con Parse
Persistencia de datos con ParsePersistencia de datos con Parse
Persistencia de datos con ParseAlfonso Alba
 
Perl6 expresiones regulares
Perl6 expresiones regularesPerl6 expresiones regulares
Perl6 expresiones regularesAlfonso Alba
 
Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Alfonso Alba
 

Más de Alfonso Alba (10)

Bienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core DataBienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core Data
 
Persistencia de datos con Parse
Persistencia de datos con ParsePersistencia de datos con Parse
Persistencia de datos con Parse
 
Usuarios ipad
Usuarios ipadUsuarios ipad
Usuarios ipad
 
Git
GitGit
Git
 
Perl6 expresiones regulares
Perl6 expresiones regularesPerl6 expresiones regulares
Perl6 expresiones regulares
 
Perl5 hashes
Perl5 hashesPerl5 hashes
Perl5 hashes
 
Perl2 arrays
Perl2 arraysPerl2 arrays
Perl2 arrays
 
Perl3 subrutinas
Perl3 subrutinasPerl3 subrutinas
Perl3 subrutinas
 
Perl4 io
Perl4 ioPerl4 io
Perl4 io
 
Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01
 

Último

el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 

Último (20)

el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 

Perl1 escalares

  • 1. Programación en Perl para administradores de sistemas
  • 2. ¿Qué necesitamos? Intérprete: Linux: viene por defecto en todas las distribuciones Unix: ...cualquier sistema UNIX que se precie lo incluye Mac: viene en el sistema (como buen UNIX que es). Alternativas macports: http://goo.gl/k5HnD Active Perl: http://goo.gl/V8R3h Windows: Active Perl: http://goo.gl/V8R3h Cygwin: http://goo.gl/czYc5
  • 3. ¿Qué necesitamos? IDE: Plugin de eclipse: http://goo.gl/RnAvo Komodo (Comercial): http://goo.gl/rtnEi Komodo Edit (open source): http://goo.gl/m1d0c padre (linux y windows, en mac la instalación se puede complicar por necesitarse un entorno de 32 bits): http:// goo.gl/jh6ca vi, emacs, joe, gedit, kate... o cualquier editor de texto de UNIX que soporte resaltado de sintaxis. más información: perlfaq3 (http://goo.gl/QkJLL)
  • 4. Nota curiosa: asemejar la sintaxis de perl con las ¿Perl es fácil o difícil? contracciones en inglés. Perl es fácil de usar, pero “difícil” de aprender while (<>) { chomp; print join("t", (split /:/)[0, 2, 1, 5] ), "n"; } Una vez se maneja la sintaxis es un lenguaje muy productivo: con pocas líneas de texto se consiguen muchos resultados
  • 5. ¿Cuándo usar perl? Vale para todo: Desde pequeños prototipos o programas “rápidos” escritos en 5 minutos Hasta grandes proyectos que impliquen a varios programadores. Es la mejor herramienta para problemas en los que haya que trabajar con texto el 90% del tiempo y un 10% en el resto. En su día era el motor de las webs dinámicas (que se ajustan a la perfección al caso anterior)
  • 6. ¿Cuándo no usarlo? Si el software a distribuir no se puede distribuir con código fuente: No se pueden generar binarios. Si no quieres que tus colegas te miren raro...
  • 7. Nuestro primer programa Abrimos nuestro editor de texto/IDE y escribimos 1.#!/usr/bin/perl 2.print "Mi primer programan"; Línea 1: indica al intérprete qué ejecutable usar para interpretar el programa Línea 2: imprime por pantalla
  • 8. Ejecutando el programa A través de nuestro IDE, si lo soporta Usando la línea de comandos: perl miscript.pl chmod +x miscript.pl ./miscript.pl Esta forma sólo funciona si el script contiene la línea #!/usr/bin/perl
  • 9. ...y ahora lo escribimos en perl 1.#!/usr/bin/perl 2.use 5.010; 3.say "Hello World!"; línea 2: forzamos el uso de una versión determinada de perl (5.10) línea 3: usamos la función “say” (disponible en 5.10) porque es más concisa (escribimos menos)
  • 10. Un script que hace “algo” 1.#!/usr/bin/perl 2.@lines = `perldoc -u -f atan2`; 3.foreach (@lines) { 4. s/w<([^>]+)>/U$1/g; 5. print; 6.} ...no te preocupes si no lo entiendes ¡para eso estamos aquí!
  • 11. http://www.marcports.org http://www.activestate.com/activeperl http://www.cygwin.com http://www.epic-ide.org http://padre.perlide.org http://perldoc.perl.org/perlfaq.html#the- http://www.activestate.com/komodo-ide http://www.activestate.com/komodo-edit perlfaq3-manpage%3a-Programming-Tools
  • 13. Escalares Tipo de dato más simple que podemos encontrar en perl
  • 14. Escalares Tipo de dato más simple que podemos encontrar en perl Sirve para almacenar “una unidad algo”
  • 15. Escalares Tipo de dato más simple que podemos encontrar en perl Sirve para almacenar “una unidad algo” La mayoría de escalares son números o cadenas de caracteres.
  • 16. Escalares Tipo de dato más simple que podemos encontrar en perl Sirve para almacenar “una unidad algo” La mayoría de escalares son números o cadenas de caracteres. Sí, en perl no hay mucha diferencia entre una cadena y un número y el intérprete puede usarlos indistintamente en casi todos los contextos.
  • 18. Escalares: números Definición de literal: cómo se representa un valor en el código fuente de perl.
  • 19. Escalares: números Definición de literal: cómo se representa un valor en el código fuente de perl. Perl almacena los números internamente siempre como “double”, no existe el entero internamente en perl.
  • 20. Escalares: números Literales en coma flotante 1.25 7.25e45 -15e-10 -1.2E23
  • 21. Escalares: números Literales de entero 0 2011 -40 8817264612412 Este número es un poco difícil de leer ¿verdad?
  • 22. Acordarse más adelante de decir porqué no Escalares: números podemos usar la coma para separar grupos de números. Literales de entero 0 2011 -40 8_817_264_612_412 Así es más claro. Más adelante veremos porqué no podemos usar la coma
  • 24. Escalares: números Números en hexadecimal: 0xD4F3 0x1377_0B77
  • 25. Escalares: números Números en hexadecimal: 0xD4F3 0x1377_0B77 Números en octal: 0377
  • 26. Escalares: números Números en hexadecimal: 0xD4F3 0x1377_0B77 Números en octal: 0377 Números en binario: 0b111101101 0b111_101_101
  • 27. Escalares: números Operadores: 2+3 5.1 - 2.4 3 * 12 14 / 2 10.2 / 0.3 10 % 3 (Resto de la división entera = 1) 10.5 % 3.2 (se calcula como 10 % 3) 2**3 (2 al cubo = 8)
  • 28. Tal y como dice el libro, podríamos coger un Escalares: cadenas binario, meterlo en un escalar como una cadena de texto, modificarlo y guardarlo a disco. ¿Tenemos un ejemplo de esto en algún lado? Una cadena es una secuencia de caracteres, por ejemplo: hola ☃★๛ Cadena más corta: cadena vacía Cadena más larga: la que soporte nuestra memoria ¡no hay límite a nivel del intérprete!
  • 29. Escalares: cadenas Perl soporta unicode. No activo por defecto por compatibilidad con scripts más antiguos. Para activarlo, utilizar el siguiente pragma al inicio de nuestros scripts: use utf8 El fichero tiene que almacenarse en utf8/unicode
  • 30. Escalares: cadenas Literales de cadena en perl usando comillas simples: ‘hola’ ‘’ -> cadena vacía ‘Cadena con dos ‘apostrofos’ dentro’ ‘Cadena con una barra invertida’ ‘Cadena con un retorno de carro’ (contiene 30 caracteres)
  • 31. Escalares: cadenas Literales de cadena en perl usando comillas dobles: “hola” “” -> cadena vacía “Cadena con dos ”comillas” dentro” “Cadena con ‘comillas simples’ dentro“ Las comillas dobles expanden los caracteres de escape: “holata todos” ->tabulador “hola a todosn” “x{2668}”
  • 33. Escalares: cadenas n Newline r Return t Tab f Formfeed b Backspace a Bell e Escape (ASCII escape character) 007 Any octal ASCII value (here, 007 = bell) x7f Any hex ASCII value (here, 7f = delete) x{2744} Any hex Unicode code point (here, U+2744 = snowflake)
  • 34. Escalares: cadenas n Newline cC A “control” character (here, Ctrl-C) r Return Barra invertida t Tab “ Comilla doble f Formfeed l Siguiente letra en minúscula b Backspace L Todas las siguientes letras en minúscula a Bell hasta que se encuentre E e Escape (ASCII escape character) u Siguiente letra en mayúscula 007 Any octal ASCII value (here, 007 = U Todas las siguientes letras en mayúscula bell) hasta que se encuentre E x7f Any hex ASCII value (here, 7f = Q Escapa todo lo que no sea una letra delete) añadiendo una barra invertida hasta que se encuentre E x{2744} Any hex Unicode code point (here, U+2744 = snowflake) E Finaliza L, U, or Q
  • 35. Escalares: cadenas Las comillas dobles interpolan variables 1.#!/usr/bin/perl 2.use 5.010; 3.use utf8; 4.$saludo = 'Hola'; 5.say "$saludo a todos"; ------ Salida: Hola a todos
  • 37. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n”
  • 38. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n” Repetición de cadena “Cadena”x3 -> devuelve CadenaCadenaCadena
  • 39. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n” Repetición de cadena “Cadena”x3 -> devuelve CadenaCadenaCadena ¿Qué devuelve lo siguiente? 5x4.8
  • 40. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n” Repetición de cadena “Cadena”x3 -> devuelve CadenaCadenaCadena ¿Qué devuelve lo siguiente? 5x4.8 -> 5555
  • 41. Escalares: conversión automática de tipos ¿porqué 5x4.8 devuelve 5555? Para perl no hay mucha diferencia entre 5 y “5” a la hora de almacenar. La distinción se hace a la hora de “usar” el literal. x es un operador de cadena, y espera dos argumentos: una cadena a la izquierda un entero a la derecha por lo tanto, convertirá el primer operando a una cadena y el segundo a un entero lo hace el sólo, nosotros no tenemos que preocuparnos de hacer la conversión de tipos
  • 42. Escalares: conversión automática de tipos un pequeño test:
  • 43. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; say “5” + 24; say 7 . 34; say 7.34; say “hola” * 3; say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
  • 44. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; say 7.34; say “hola” * 3; say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
  • 45. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; say “hola” * 3; say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
  • 46. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
  • 47. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número) say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
  • 48. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número) say 6 * “12 es docena”; 72 say “1.67” * “100”; say ‘0xF’ * 10;
  • 49. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número) say 6 * “12 es docena”; 72 say “1.67” * “100”; 167 say ‘0xF’ * 10;
  • 50. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número) say 6 * “12 es docena”; 72 say “1.67” * “100”; 167 say ‘0xF’ * 10; 0 (número)
  • 51. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número) say 6 * “12 es docena”; 72 say “1.67” * “100”; 167 say ‘0xF’ * 10; 0 (número)
  • 52. Escalares: warnings Se pueden activar de dos maneras: use warnings; (sólo a partir de 5.6) #!/usr/bin/perl -w perl -w script.pl La primera tiene la ventaja de que se activan sólo para el fichero en la que usa el pragma. Las otras dos se activan para todos los guiones.
  • 53. Escalares: warnings say “5” + 3; -> no genera un warning say “5 manzanas” + 3 -> genera un warning Argument "5 manzanas" isn't numeric in addition (+) at warnings.pl line 12 (#1)
  • 54. Escalares: warnings ¿y si el warning no es suficiente? use diagnostics perl -Mdiagnostics script.pl Argument "5 manzanas" isn't numeric in addition (+) at diagnostics.pl line 12 (#1) (W numeric) The indicated string was fed as an argument to an operator that expected a numeric value instead. If you're fortunate the message will identify which operator was so unfortunate. http://perldoc.perl.org/perldiag.html tiene toda la documentación sobre los errores
  • 57. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador:
  • 58. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador: $nombre
  • 59. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador: $nombre $_nombre
  • 60. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador: $nombre $_nombre $apellido1
  • 61. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador: $nombre $_nombre $apellido1 $nombre_y_apellidos_del_usuario
  • 62. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador: $nombre $_nombre $apellido1 $nombre_y_apellidos_del_usuario $2nombres -> MAL
  • 63. Escalares: variables Almacenan un escalar Comienzan por $ seguido de un identificador: $nombre $_nombre $apellido1 $nombre_y_apellidos_del_usuario $2nombres -> MAL $años -> correcto si se utiliza use utf8;
  • 64. Escalares: variables Asignando valores: $nombre = ‘Luis’; $edad = 25; $decenios = int $edad/10; $usuario = $nombre . ‘ ‘ . $apellidos;
  • 65. Escalares: variables Imprimiendo variables: say $nombre say “$nombre” -> se prefiere la primera ¡hay que escribir menos! say “$nombre nació en $año”; $singular = “dedo”; say “$singulars”; -> no funciona say “${singular}s” ->este sí
  • 66. Escalares: comparación Operación Número Cadena Igual == eq Distinto != ne Menor que < lt Mayor que > gt Menor o igual <= le Mayor o igual >= ge
  • 67. Escalares: precedencia de operadores http://perldoc.perl.org/perlop.html
  • 68. Escalares: if 1.if ($nombre gt 'luis') { 2.    print "'$name' va después que 'luis'.n"; 3.} else { 4.    print "'$name' o va antes que luis 'fred'.n"; 5.    print "o es la misma cadenan"; 6.}
  • 69. Escalares: verdadero o falso Si el escalar es el número 0 es falso, cualquier otro número es verdadero Si el escalar es una cadena vacía, es falso, cualquier otra cadena es verdadero Si no es un número o una cadena, convertirlo a cadena o número y volver a intentarlo Nota: la única cadena que se convierte a falso, además de la cadena vacía es ‘0’
  • 70. Escalares: entrada Para leer la entrada estándar usamos el operador <STDIN> Se puede usar en cualquier lugar en el que perl espere un escalar. Perl sustituirá el operador <STDIN> por la entrada estándar $linea = <STDIN>
  • 71. Escalares: chomp Toma una cadena como argumento y elimina el retorno de carro (n) 1.$text = "a line of textn"; 2.chomp($text);
  • 72. Escalares: while 1.$contador = 0; 2.while ($contador < 10) { 3.    $contador += 2; 4.    print "Contador vale $contadorn";# devuelve 2 4 6 8 10 5.} El cuerpo del bucle se evalúa cuando la condición es verdadera
  • 73. Escalares: until 1.$contador = 0; 2.untill ($contador == 10) { 3.    $contador += 2; 4.    print "Contador vale $contadorn";# devuelve 2 4 6 8 10 5.} El cuerpo del bucle se evalúa cuando la condición es falsa
  • 74. Ejercicios 1. Escribe un programa que calcule el perímetro de una circunferencia de radio 12.5. El perímetro es 2π veces el radio (π = 3.141592654). La respuesta debe estar entorno a 78.5. 2. Modificar el programa anterior para que el usuario pueda introducir el radio de la circunferencia. 3. Modificar el programa anterior de forma que, si el usuario introduce un número negativo, el perímetro sea cero. 4. Escribe un programa que lee dos números (en dos líneas de texto separadas) y calcula el producto. 5. Escribe un programa que lea una cadena y un número y muestre la cadena repetida en tantas líneas como el número que haya introducido el usuario. Si se introduce Luis y 3 se devolverán tres líneas en las que pone “Luis”. Si se introduce “Luis” y 789979 saldrán muchas líneas

Notas del editor

  1. \n
  2. \n
  3. \n
  4. Referencia: learning perl 6th ed. p&amp;#xE1;gina 6\nDise&amp;#xF1;ado de la siguiente manera: a veces Larry ten&amp;#xED;a que elegir entre estas dos opciones:\n- hacerlo f&amp;#xE1;cil para el estudiante/novato\n- hacerlo m&amp;#xE1;s dif&amp;#xED;cil de aprender pero m&amp;#xE1;s f&amp;#xE1;cil para el programador experimentado.\n\n...se escogi&amp;#xF3; siempre la segunda opci&amp;#xF3;n.\n\nEjemplo de c&amp;#xF3;digo:\n- Utiliza funciones con par&amp;#xE1;metros por defecto\n- syntaxis compacta\n- si no se usasen estas caracter&amp;#xED;sticas de perl el mismo c&amp;#xF3;digo ocupar&amp;#xED;a mucho m&amp;#xE1;s\n\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. Referencia: learning perl 6th ed. p&amp;#xE1;gina 13-14\n\nLo haremos durante todo el curso: buscaremos siempre la manera de usar la sintaxis compacta de perl.\n\nla versi&amp;#xF3;n menor son tres d&amp;#xED;gitos, es decir use 5.010 se convierte en 5.10. Si ponemos use 5.100 esto se expande a la versi&amp;#xF3;n 5.100 que no existe (existe la 5.10).\n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. Learning Perl 6th ed. p&amp;#xE1;gina 24\n\nDado que en perl podemos tener cualquier caracter en una cadena, podr&amp;#xED;amos hacer lo siguiente:\n- Leer un fichero binario (una imagen por ejemplo) en un escalar.\n- Modificarlo\n- Volver a guardarlo al disco.\n
  26. \n
  27. \n
  28. \n
  29. ejemplo: secuencias_escape.pl\n
  30. ejemplo: secuencias_escape.pl\n
  31. \n
  32. ejemplo: operadores_cadena.pl\n
  33. ejemplo: operadores_cadena.pl\n
  34. ejemplo: operadores_cadena.pl\n
  35. operadores_cadena.pl\n
  36. \n
  37. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  38. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  39. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  40. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  41. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  42. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  43. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  44. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  45. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  46. Comentario: para que el &amp;#xFA;ltimo funcione es necesario hacer \n\nsay hex(&amp;#x2018;xF&amp;#x2019;) * 10;\nsay oct(&amp;#x2018;032&amp;#x2019;) * 10;\n\nEjemplo: conversion_tipos.pl\n
  47. Como hemos visto y veremos, el int&amp;#xE9;rprete puede hacer muchas cosas por nosotros en funci&amp;#xF3;n del contexto.\n&amp;#xBF;C&amp;#xF3;mo hacemos para que nos avise cuando ve algo sospechoso?\n
  48. \n
  49. Mostrar el ejemplo de warnings: warnings.pl\n
  50. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  51. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  52. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  53. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  54. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  55. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  56. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  57. learning perl 6th edition p&amp;#xE1;gina 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -&gt; no es muy descriptivo\n\nprint &amp;#x201C;$a $b $r -&gt; $j&amp;#x201D;;\nprint &amp;#x201C;$nombre $apellido1 $apellido2 -&gt; $a&amp;#xF1;o&amp;#x201D;; es mucho m&amp;#xE1;s claro\n
  58. \n
  59. Nombrar\n
  60. \n
  61. \n
  62. La comparaci&amp;#xF3;n admite cualquier escalar &amp;#xBF;c&amp;#xF3;mo decide perl si el escalar es verdadero o falso?\n
  63. \n
  64. Hacer el siguiente script de ejemplo:\n\nsay &amp;#x201C;Di algo:&amp;#x201D;;\n$line = &lt;STDIN&gt;;if ($line eq &quot;\\n&quot;) {\nprint &quot;That was just a blank line!\\n&quot;;\n } else {\n print &quot;That line of input was: $line&quot;;\n}\n\n#&lt;STDIN&gt; se puede usar en cualquier lugar en el que perl espere un escalar\n# por lo que podemos usarlo directamente dentro del if\nsay &quot;Di algo otra vez:&quot;;\nif (&lt;STDIN&gt; eq &quot;\\n&quot;) {\n print &quot;&amp;#xA1;No has dicho nada!\\n&quot;;\n} else {\n print &quot;&amp;#xA1;O&amp;#xED;do cocina!\\n&quot;;\n}\n\nVer c&amp;#xF3;mo estamos comparando que el usuario no introduce nada. Esto lo podemos mejorar\n
  65. Ejemplos a poner: chomp.pl\n# En este ejemplo usamos print para que no se imprima un \\n al final de cada l&amp;#xED;nea en la consola\n$cadena = &quot;Cadena con \\\\n al final\\n&quot;;\nprint $cadena;\n\nsay &quot;Usamos la funci&amp;#xF3;n chomp:&quot;;\nchomp $cadena;\n\nchomp2.pl\n\nsay &quot;Di algo:&quot;\nchomp ($line = &lt;STDIN&gt;);\nunless ($line) {\nprint &quot;&amp;#xA1;No has dicho nada!\\n&quot;;\n} else {\nprint &quot;&amp;#xBF;te he entendido bien?: $line\\n&quot;;\n}\nMacBo\n\n
  66. \n
  67. Ejercicio a hacer: pasarlo a una sola l&amp;#xED;nea:\n\n$contador = 0;\nsay &quot;contador vale &quot;.($contador+=2) until $contador == 10;\n$contador = 0;\nsay &quot;contador vale &quot;.($contador+=2) while $contador &lt; 10;\n
  68. \n