View
12
Download
0
Category
Preview:
Citation preview
Introducción a Perl
Alex SánchezDepartament d'Estadística-UB
Unitat d'Estadística I Bioinformàtica-IRHUVH
Esquema
IntroducciónEstructura de un script sencilloTipos de variables
Escalares ($), arrays (@), hashes (%)
OperadoresEstructuras de control
¿Qué es Perl?Practical Extraction And Reporting LanguageCreado por Larry Wall en 1987 para disponer de una herramienta flexible y potente (“a language of getting your job done”)Originalmente orientado a la manipulación de textos su uso se ha extendido a
Administración de sistemas,Desarrollo web (CGIs)Programación de redes o entornos gráficos
Perl en BioinformáticaUso generalizado en Bioinformática
Muchos datos son cadenas de texto.Entorno de trabajo preferente: linux.Fácil de acceder a datos de internet.Curva de aprendizaje es muy rápida.Gran biblioteca de módulos (CPAN, BioPerl,...) que permiten resolver rápidamente problemas concretos.Es gratuíto y multisistema.
El ciclo de desarrolloDefinir y delimitar el problema¿Existe código que lo resuelva?
Si es así -->AdaptarloSi no existe o no es adaptable...
Diseñar nuestra soluciónEscribir el código
Ciclos prueba/depuración
Ejecutar el programa
EsquemaIntroducciónEstructura de un script sencilloTipos de variables
Escalares ($), arrays (@), hashes (%)OperadoresEstructuras de control
“Hola Mundo”Abrir una terminalCrear un directoriode trabajoSituarse en élCrear archivo‘hola_mon.pl’Codificar programaHacerlo ejecutableProbar/Ejecutar
mkdir pract_perlcd pract_perlemacs ‘hola_mon.pl’chmod +x hola_mon.pl...
perl-v hola_mon.pl
Los scripts de Perl
#!/usr/bin/perluse strict;use warnings;# tell the program to# print "Hello world"print "Hello world" ;# tell the program # to exitexit ;
Ejecución del script• Enviando el programa al intérprete>perl hola_mon.pl
• Haciendo que el archivo sea ejecutable> chmod a+x hello.pl
> ./hola_mon.pl
EsquemaIntroducciónEstructura de un script sencilloTipos de variables
Escalares ($), arrays (@), hashes (%)OperadoresEstructuras de control
Variables y tipos de datosLas variables son contenedores que permitenrepresentar datos de diversos tipos
Tipo Prefijo Ejemplo Describe
Escalar $ $nom Valor individual (numero o cadena)
Array @ @alturas Lista de valores con clave numérica (“indice”)
Hash % %descripts Lista de valores con clave textual
Subrutina & &power Fragmento de código
EscalaresCadenas, números, valores lógicos, referencias.No es preciso declarar el tipo. Perl puedeasignarlo por contexto.Empiezan con “$” y se declaran con “my”Ejemplos
my $num = 42; my $num2 = “42”; $name = ‘joe’$color = “blue”, $string_w_num = “I have 10 apples” apples”
Manipulación de escalares• chomp, chop, lc, lcfirst, length,
reverse, substr, uc, ucfirst,• chr, crypt, hex, index, oct, ord, pack,
q//, qq//, rindex, sprintf, tr///, y///• rand, abs, atan2, cos, exp, hex, int,
log, oct, sin, sqrt, srandhttp://perldoc.perl.org/perlfunc.html#Perl-Functions-by-Category
“Quoting”El uso de comillas es sutil: “...”. ‘...’Puede permitir acceder al valor de unavariable dentro de un texto
$var =10;$text = “There are $var apples”
– print $text -->There are 10 apples
$text2 = ‘There are $var apples’– print $text2 -->There are $var apples
Ejemplo de arrays#!/usr/bin/perluse strict; use warnings;my $one = 1;# array of stringsmy @array_string1= ('$one', 'Two', 'Three', 'Four');my @array_string2= ("$one","Two","Three","Four");# Se puede declarar primero y asignar valores despuesmy @array_string3;$array_string3[0] = "$one";$array_string3[1] = "Deux";$array_string3[2] = "Trois";$array_string3[3] = "Quatre";print @array_string1; print "\n";print @array_string2; print "\n";print @array_string3; print "\n";exit;
Ejemplo de manipulación de arrays#!/usr/bin/perl
use strict; use warnings;
# array of strings
my @array_string = ('One', 'Two', 'Three', 'Four');
# replaces One with Zero in @array_string
$array_string[0] = 'Zero';
print "@array_string\n";
my @sort_array_string = sort @array_string;
print "@sort_array_string\n";
pop (@sort_array_string);
push (@sort_array_string, "One");
push (@sort_array_string, $array_string[0]);
print "@sort_array_string\n";
exit;
Ejemplo de Hash#!/usr/bin/perluse strict; use warnings;my %codon3 = ("TTT" => "Phe","TTA" => "Leu",);print $codon3{'TTT'};print "\n";exit;
EsquemaIntroducciónEstructura de un script sencilloTipos de variables
Escalares ($), arrays (@), hashes (%)OperadoresEstructuras de control
Operadores de perl
Como perl no distingue entre textos y números (todos son escalares)Debemos utilizar operadores de coparación distintos según deseemos considerar que comparamos textos o números.
Más sobre operadoresExpresiones lógicas&& y|| o! No
Diversos= asignación. Concatenar cadenasx Multiplicar cadenas.. Crea una lista de números
(rango)
Es posible combinar operadores con “=“
$a += 1; equivale a$a = $a + 1; $a++;
$a -= 1; equivale a$a = $a - 1; $a--;
$a .= "\n“equivale a $a = $a. "\n";
Ejemplos de operadores#!/usr/bin/perl
use strict;
use warnings;
my $x = 100;
my $y = 99;
if ($x > $y)
{ print "\"$x\" is numerically greater than \"$y\"\n" ; }
else
{ print "\"$x\" is numerically smaller than \"$y\"\n" ; }
if ($x gt $y)
{ print "\"$x\" is alphabetically greater than \"$y\"\n" ; }
else
{ print "\"$x\" is alphabetically smaller than \"$y\"\n" ; }
exit ;
EsquemaIntroducciónEstructura de un script sencilloTipos de variables
Escalares ($), arrays (@), hashes (%)OperadoresEstructuras de control
Estructuras de control
BifurcacionesSimples [if], dobles [if…else]
IteracionesIncondicionales [for] Condicionales [while]
Bifurcación simple: SI... ENTONCES...
Condició
Acció
SINO •Se evalua la condiciòn
–Si es cierta se ejecuta la acción.–Si es falsa se ignora la acción y se pasa a las siguientes.
Ejemplo de estructura SI…ENTONCES…SI NO…
TreuMISSATGE D'ERROR
Estructura IF..THEN..ELSE
Calcula AREA
INICI
FI
Entra RADI
Treu RESULTAT
Radi > 0?SI NO
Ejemplo de ‘if / if else’#!/usr/bin/perluse strict;use warnings;my $PI =3.141592;print "\nEntra el radio y pulsa "return\":\t";my $radio = <STDIN>;chomp $radio;if ($radio > 0){
my $Area=PI*$radio^2}else
{print “\nEl radio no puede ser negativo \n”;}exit ;
La estructurapara ...i...desde... hasta...
Vc<=Vf
Vc:=Vc+In
Si
No
Acció
Vc:=Vi
•Se empieza con una inicialización de una variable contadora
–Se ejecuta una sola vez•La condición de final de bucle es como en otros casos•El incremento del contador es automático
Ejemplo de ‘for’ (1)#!/usr/bin/perluse strict;use warnings;my $counter;for ($counter=1;$counter<=10;$counter++) {print “Puedo contar hasta $counter !\n";}exit ;
Ejemplo de ‘for’ (2): for anidado#!/usr/bin/perluse strict; use warnings;my $i; my $j;for ($i=1;$i<=5;$i++) {
print "\n$i";for ($j=10;$j<=100;$j+=10) {print "\t$j";}
}print "\n";exit ;
Estructura: “Mientras...Repetir”
•Se evalúa la condición al principio del bucle•La acción se ejecuta entre 0 y N veces:
–Aunque puede no ejecutarse nunca!
Condició
Acció
Si
No
Mentre…Repetir
Ejemplo de ‘while’#!/usr/bin/perluse strict;use warnings;my $number = 1;while ($number<=10) {print “Puedo contar hasta $number !";$number+=1; #Ha !}exit ; #really ?
Recommended