Introdução ao Perl Apresentado por: Mário Silva [email protected] Roadmap • O que é o Perl • Perl para iniciantes – Programa “Hello World” – Tipos de dados • TIMTOWDI – Hello World – Estruturas de controlo – Regex (Regular Expressions) – Funções O que é o Perl • Linguagem de programação estável e multiplataforma • Criada em 1987 por Larry Wall • Especialmente eficaz no tratamento de Strings • Permite tempos de desenvolvimento curtos • Lema do Perl: – There Is More Than One Way to Do It (TIMTOWDI) Perl para iniciantes Hello World • Código print 'Hello World!' • Resultado – Hello World! IDE • Eclipse Epic Tipos de dados • 3 tipos de variaveis – Escalares • my $scalar; – Arrays • my @array; – Hashes • my %hash; Escalares • Código my $str; my $num; $str = 'Tomar.pm'; $num = 1; print 'O grupo ',$str, ' é o numero ', $num; • Output – O grupo Tomar.pm é o numero 1 Arrays • Código my @array; $array[0] = 'Tomar.pm'; $array[1] = 1; print 'O grupo', $array[0],' é o numero ', $array[1]; • Output – O grupo Tomar.pm é o numero 1 Hashes • Código my %hash; $hash{nome} = 'Tomar.pm'; $hash{num} = 1; print 'O grupo ',$hash{nome},' é o numero ',$hash{num}; • Output – O grupo Tomar.pm é o numero 1 O valor undef • Código my $value; if (defined $value) { print 'está definido'; } else { print 'indefinido'; } • Output – indefinido TIMTOWDI Hello World • Na consola: perl -e 'print "Hello World!!\n"' • Resultado – Hello World!! • Conhecido como “one liners” Hello World • Ficheiro helloWorld.pl: – Código print 'Hello World!!”; • Executar o programa perl helloWorld.pl • Resultado – Hello World!! Hello World • Código mais comum: #!/usr/bin/perl print “Hello World!!\n”; • Executar chmod +x helloWorld.pl ./helloWorld.pl Estruturas de controlo • If ... elsif .. else if ($esta_a_nevar) { print “leva a samarra”; } elsif ($esta_a_chover) { print “leva o guarda chuva”; else { print “vai de calcoes e t-shirt”; } Estruturas de controlo • Comando for for (my $i=1; $i<10; $i++) { print $i; } Estruturas de controlo • Comando for my @nums = 1..10; for my $i (@nums) { print $i; } Estruturas de controlo • Comando for my @nums = 1..10; for (@nums) { print $_; # igual a print; } Estruturas de controlo • Comando while my $counter = 1; while ( 1 ) { print "Estou em loop infinito"; $counter++; if ($counter==6) { last; # last = java break } } print 'o contador esta com ', $counter; • Output – o contador esta com 6 Estruturas de controlo • Comando while my $counter = 1; while ( 1 ) { print "Estou em loop infinito"; last if ++$counter == 6; } print "o contador esta com ", $counter; • Output – o contador esta com 6 Estruturas de controlo • Modificadores de espressões if ($temp > 20) { print “Esta calor”; } • Em vez disso: print “Esta calor” if ($temp > 20); Estruturas de controlo • Modificadores de expressão print “Esta calor if ($temp > 20); print “$_\n” for (1..10); print “$i++\n” while ($i<10); Estruturas de controlo • Operador ternário ($num == 1) ? print “E igual a 1” : print “Nao e igual a 1”; • Outro exemplo: my $size = ($width < 10) ? 'small' : ($width < 20) ? 'medium' : ($width < 50) ? 'large' : 'extra-large'; #default Estruturas de controlo • Comparação com if .. elsif .. else if ($width < 10) $size = “small”; } elsif ($width < 20) { $size = “medium”; } elsif .... } else { $size = “extra-large”; } Regex • Código: my $texto = 'Ola mundo'; print ($texto =~ /ola/); • Resultado –1 Regex • Código my $texto = 'Ola mundo'; $texto =~ s/mundo/IPT/; print $texto; • Resultado – Ola IPT Funções • Código &func('ola ', 'mundo'); sub func { my ($param1, $param2) = @_; print “$param1 $param2”; } • Output ola mundo Referências • Randal Schwartz, Tom Phoenix, brian d foy,Learning Perl, 4ª edição, O'Reilly, 2005 Dúvidas