TEMA 6 – PROGRAMACIÓN CON PERL (II) (2015)

Apunte Español
Universidad Universidad Autónoma de Barcelona (UAB)
Grado Genética - 2º curso
Asignatura Técnicas instrumentales
Año del apunte 2015
Páginas 10
Fecha de subida 14/03/2015 (Actualizado: 21/03/2015)
Descargas 12

Vista previa del texto

TEMA 6 – PROGRAMACIÓN CON PERL (II) Tipos de datos - Texto (o cadena de caracteres, string), puede ir entre comillas simples (‘) o comillas dobles (“): "cadena numero 1", 'cadena numero 2' Números: 1, 49, 28.2, -109, 6.04E23 Caracteres especiales: "Nueva línea\n<aquí y un tab\t<aquí.\n"; o \n: salto de página o \t: tabulador Tipos de variables en Perl Las variables son el “lugar” donde guardamos la información. En función de la cantidad de datos que queramos guardar podemos distinguir tres tipos de variables: - Variables escalares (scalars): sólo guardan un dato.
Matrices (arrays): guarda un conjunto de datos ordenados. Importa el orden cuando queremos acceder a un solo dato.
Matrices asociativas (hashes): guardan parejas de datos, la clave y su valor.
Las variables proporcionan un lugar donde guardar datos temporalmente.
- - Crear variables  Declarar. Crearemos variables cuando las escribamos por primera vez. A su vez declaramos las siguientes dos cosas: o Ámbito: si la variable sirve para todo el programa o sólo una parte.
o Tipo de contenido. Por ejemplo, Perl, los números los puede interpretar tanto como números con los que hacer operaciones o como texto.
Asignar valor a la variable  Definir.
Variables escalares (scalars) Características de los nombres de las variables escalares: - - - - Para introducir una variable deberemos escribir el símbolo del dólar ($) delante del nombre de la misma.
Perl distingue entre mayúsculas y minúsculas. Por tanto, no es lo mismo $a que $A.
El primer carácter de la variable siempre deberá ser una letra.
Detrás podremos poner letras, números o barra baja (_).
El nombre de la variable no debería ser ni demasiado largo ni demasiado largo. Si es demasiado corto, podríamos olvidarnos del dato que contiene X variable, y si es demasiado largo, al escribirla otras veces, podríamos equivocarnos y crear una nueva variable sin querer. Por tanto, debería ser un nombre intuitivo y de una medida razonable.
Contenido de las variables: - Las variables tendrán un nombre constante en el programa, no se le podrá cambiar el nombre.
Pero su contenido sí que será variable a lo largo del programa, lo podremos cambiar fácilmente siempre que queramos.
Para asignar valores a las variables: - Las comillas dobles (“) interpretan los valores o datos, es decir, son capaces de acceder al contenido que almacenan.
Para escribir una contrabarra (\) deberemos escribir 2, si queremos escribir 2 deberemos escribir 3, y así sucesivamente. Esto es porque “escapamos” la \.
Concatenar una variable escalar es poner el valor de una variable junto al valor de otra.
Para ello deberemos escribir un punto (.) entre las dos variables que queremos juntar.
Además, entre las dos variables podemos poner texto ($var1.’texto’.$var2), un espacio ($var1.’ ’.$var2)… Operadores aritméticos: - +  suma -  resta *  multiplicación /  división **  exponencial ()  agrupación Por ejemplo: No es lo mismo: Cuando operemos al introducir una variable, lo que haremos será guardar el resultado, no la operación.
Algunas funciones aplicables a las variables escalares son: - length: sirve para calcular la longitud de la variable. Por ejemplo, contamos en número de caracteres de una variable que es texto.
- uc: sirve para pasar el valor de la variable a mayúsculas.
lc: sirve para pasar el valor de la variable a minúsculas.
Matrices (arrays) A las matrices también se les puede denominar arrays o vectores. Son variables que almacenan múltiples valores escalares en diferentes posiciones.
- - - - Cada valor se encuentra en una posición diferente.
Respecto a la posición de los valores, empezamos a contar desde 0 y luego vamos sumando +1.
Para crear una matriz escribiremos una arroba (@) y el nombre que le queramos dar.
Cada uno de los valores de la matriz deberá ir entre comillas y separados por comas.
Podemos tener copiar una matriz y así tener dos copias. Esto lo haremos igualando la matriz que aún no existe (la que será la copia) a la matriz original, y que por tanto ya existe. Es decir, la variable que aún esté vacía irá a la izquierda.
Operaciones con matrices: - - - - - - - Para acceder a un solo valor de la matriz deberemos escribir $ (obtendremos una variable escalar), el nombre de la matriz y la posición del valor entre corchetes ([]).
Podemos contar el número de elementos que contiene la matriz. Lo podemos hacer de dos maneras: o Contando el número de variables.
o Accediendo a la última posición de la matriz. Pero pensémos que n = p + 1.
Con reverse giraremos el orden en el que están introducidos los valores en la matriz, aunque los datos quedan intactos; por ejemplo, One no se convertirá en enO. Guardaremos el resultado en otra matriz, ya que nos dará otro conjunto de datos.
Con sort ordenaremos los datos alfabéticamente. También guardaremos el resultado en una nueva matriz. Al ordenar números nos pasará lo siguiente: 1, 10, 2, 3… Con pop eliminaremos el último elemento. El programa nos lo devolverá como una variable escalar.
Con push añadiremos un valor en la última posición de la matriz.
Con shift eliminaremos el primer valor de la matriz. Al igual que con push, si lo asignamos a una base escalar nos lo podrá devolver para guardarlo.
Con unshift añadiremos un valor en primera posición de la matriz.
La función split nos permite transformar cadenas en matrices. Le deberemos indicar cuál es el separador que se encuentra ya en el valor de la variable escalar y la variable escalar que queremos “dividir”. Además si por ejemplo, el separador son comas, éstas no aparecerán en la matriz.
La función join nos sirve para todo lo contrario: transformar matrices en cadenas. Si aquí no especificamos el separador, cogerá cada carácter de la matriz y lo separará.
Otras operaciones con join y split: Matrices asociativas (hashes) Son similares a las matrices pero: - Sus elementos tienen un ‘nombre’ (clave o Key).
Cada clave tiene un valor asociado.
Su prefijo es el símbolo % Se usa {} para acceder a los valores de cada clave.
Para saber la información que hay en un hash: - - Usaremos la función keys para obtener las claves.
Usaremos la función values para obtener los valores de las claves. Pero esto también lo podemos saber para cada clave independientemente.
Estas dos funciones nos devolverán una matriz con las claves o valores. Lo que nos devuelvan no se encontrará en el mismo orden en que lo hemos introducido. Pero el orden en que nos devuelva las claves y los valores sí que será el mismo.
Entrada y salida del programa Mostrar los datos - Función print: Servirá para imprimir lo que escribamos a continuación.
Interpretar los datos - Comillas simples (‘…’): no interpretan ningún tipo de dato.
- Comillas dobles (“…“): no interpretan las operaciones ni las funciones. Por tanto, éstas las deberemos colocar entre dos fragmentos de texto y separados por paréntesis o espacios. En cambio, sí que interpretan las variables escalares.
Variables de entrada - Entorno: @ARGV y $0 La matriz @ARGV se llena cada vez que escribimos palabras en la línea de comandos. Además, cada vez que ejecutamos, la matriz se vuelve a crear.
La variable escalar $0 almacena el nombre del programa sobre el que estamos trabajando.
Entrada desde el teclado <STDIN> (abreviación de STanDard INput) para el programa hasta que el usuario introduzca algo. Lo podemos abreviar como simplemente <>.
Para no confundirnos, es recomendable imprimir alguna frase que indique al usuario que tiene que escribir algo, para que éste no se piense que el programa se ha colgado.
- Función chomp: Sirve para eliminar el último salto de línea que hemos introducido.
Mostrar los datos con formato - Función printf: o %s  cadena (string) o %d  dígito (decimal) o %f  dígito con decimales (float) Con printf podemos hacer más de una conversión a la vez: Lectura y escritura de archivos Ficheros Para leer o escribir datos con ficheros, es necesario el uso de filehandles: - Filehandle→ nombre de la conexión o Ejemplo: open(FICHERO,’datos.txt’); FICHERO: nombre del filehandle ‘datos.txt’: nombre del fichero o Ejemplo: open (FICH_DATOS,'c:\archivosperl\test\test01.dat') Si queremos abrir un fichero que se encuentra en otra carpeta, deberemos indicar la ruta de donde se encuentra. Esta ruta puede ser: - Absoluta: indicamos la ruta desde el principio, por ejemplo, desde el disco duro.
Relativa: indicamos la ruta desde la carpeta donde nos encontramos.
Lectura de ficheros Para acceder al contenido deberemos usar la función open y entre paréntesis poner el nombre del filehandle y del archivo (si se encuentra en otra carpeta escribiremos la ruta hasta él). Luego deberemos crear una matriz donde cargar el contenido del fichero: cada elemento de la matriz accederá a una fila del archivo. Finalmente deberemos usar la función close para que otros puedan usar el archivo.
Si en vez de utilizar una matriz usamos una variable escalar, cada vez que accedamos al programa se guardará un línea del fichero por orden: la 1ª, la 2ª, la 3ª… Además, con la función chomp y el nombre de la matriz entre paréntesis, eliminaremos todos los saltos de línea que tenga el archivo.
Escritura en ficheros Para escribir en los ficheros podremos utilizar: - - >: si ya existe un archivo con ese nombre lo borramos y creamos uno nuevo vacío donde escribir. Si no existiese el archivo, simplemente creamos uno donde escribir.
>>: si no existe un archivo con ese nombre, lo creamos. Si ya existe, escribiremos al final de lo que ya se encuentre escrito.
Luego deberemos cerrar la conexión con el archivo para que otros lo puedan usar.
Cada vez que queramos escribir en el archivo deberemos abrirlo y poder el filehandle y el nombre del archivo. Si no, nos saldrá un error en la línea de comandos.
Instrucción die Salvaguarda por si el fichero no está disponible. Si el archivo no existe, con la función die, el programa finalizará y nos mostrará el error pertinente.
...