1. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Perl para Sysadmins e DBA’s
Lindolfo ”Lorn” Rodrigues
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
2. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
$ whoami
$ id
$ uid=1000(lorn) gid=100(users)
grupos=11(#sao-paulo.pm), 17(#slackware-br), 18(#catalyst),
19(#moose),83(#perl6)
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
3. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
4. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
5. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
6. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
7. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
8. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
9. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Agenda
Sysadmin
One-liners
Parsers de log
Automatiza¸˜es
co
DBA
ETL
Data Cleaning
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
10. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
11. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
12. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
13. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
14. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
15. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
16. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Perl na linha de comando
Lembra muito sed/awk, com todo o poder da PCRE
sed: sed -i.bck -e ’s/foo/bar/g’ arquivo.txt
perl: perl -i.bck -npe ’s/foo/bar/g’ arquivo.txt
awk: awk ’{print $1;}’ arquivo.txt
perl: perl -npe ’print $F[0]’ arquivo.txt
Perl = Shell Script + awk + sed + ... + CPAN!
o/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
17. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
find /var/www -iname ”*.html-exec perl -i.bck -npe
’s/foo/bar/g’ ’’
perl -MDBD::mysql -e
’DBD::mysql-¿connect(’dbname=yapc;Host=192.168.1.2’,
’root’, ’yapc2009’)
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
18. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
find /var/www -iname ”*.html-exec perl -i.bck -npe
’s/foo/bar/g’ ’’
perl -MDBD::mysql -e
’DBD::mysql-¿connect(’dbname=yapc;Host=192.168.1.2’,
’root’, ’yapc2009’)
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
19. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
dicas.txt ( canivete sui¸o one-liners )
c
App::Rad!
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
20. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
dicas.txt ( canivete sui¸o one-liners )
c
App::Rad!
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
21. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
1 u s e App : : Rad ' i n c l u d e ' ;
2 App : : Rad−>run ;
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
22. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
$ perl dicas.pl include ’arruma string’ -i.bck -npe
’s/foo/bar/g’ arquivo.txt
$ perl dicas.pl
1 Usage : dicas . pl command [ arguments ]
2
3 Available Commands :
4 arruma_string
5 help show syntax and available commands
6 include include one−liner as a command
$ perl dicas.pl arruma string outro arquivo.txt
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
23. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
$ perl dicas.pl include ’arruma string’ -i.bck -npe
’s/foo/bar/g’ arquivo.txt
$ perl dicas.pl
1 Usage : dicas . pl command [ arguments ]
2
3 Available Commands :
4 arruma_string
5 help show syntax and available commands
6 include include one−liner as a command
$ perl dicas.pl arruma string outro arquivo.txt
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
24. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
$ perl dicas.pl include ’arruma string’ -i.bck -npe
’s/foo/bar/g’ arquivo.txt
$ perl dicas.pl
1 Usage : dicas . pl command [ arguments ]
2
3 Available Commands :
4 arruma_string
5 help show syntax and available commands
6 include include one−liner as a command
$ perl dicas.pl arruma string outro arquivo.txt
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
25. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
One-liners
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
26. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Parsers
Como mandar o log do Apache para o Syslog ( tutorial no
ultimo slide )
PABX
Usar Spreadsheet::Write
Customizar com cores, gerentes/chefes adoram cores
maillog
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
27. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Parsers
Como mandar o log do Apache para o Syslog ( tutorial no
ultimo slide )
PABX
Usar Spreadsheet::Write
Customizar com cores, gerentes/chefes adoram cores
maillog
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
28. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Parsers
Como mandar o log do Apache para o Syslog ( tutorial no
ultimo slide )
PABX
Usar Spreadsheet::Write
Customizar com cores, gerentes/chefes adoram cores
maillog
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
29. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Parsers
Como mandar o log do Apache para o Syslog ( tutorial no
ultimo slide )
PABX
Usar Spreadsheet::Write
Customizar com cores, gerentes/chefes adoram cores
maillog
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
30. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Parsers
Como mandar o log do Apache para o Syslog ( tutorial no
ultimo slide )
PABX
Usar Spreadsheet::Write
Customizar com cores, gerentes/chefes adoram cores
maillog
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
31. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Pr´-requisitos
e
Hash tables, o que s˜o e como pode ser usada?
a
1 my %idade = (
2 ” r a u l s e i x a s ” => 1 0 0 0 0 ,
3 ” a r t h u r d e n t ” => 42
4 );
5 p r i n t $ idade { ' a r t h u r d e n t ' } ;
6 # a d i c i o n a n d o i t e n s ao h a s h
7 $ idade { ” j e r e m i a s ” }=27;
8 # deletando itens
9 d e l e t e ( $ idade { ' r a u l s e i x a s ' } ) ;
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
32. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Pr´-requisitos
e
Estrutura de um hash:
1 $ VAR1 = {
2 ' j e r e m i a s ' => 2 7 ,
3 ' a r t h u r d e n t ' => 4 2 ,
4 ' r a u l s e i x a s ' => −10000
5 };
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
33. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Pega ”spider”
Pegando o ”invasor” do seu site
1 w h i l e (my $ line = <STDIN >) {
2 my ( $ ip ) = s p l i t ( / s / , $ line ) ;
3 $ hash_count { $ ip } = $ hash_count { $ ip } + 1 ;
4 }
5
6 p r i n t Dumper %hash_count ;
7 f o r e a c h my $ line ( s o r t { $ hash_count { $ b } <=> $ hash_count {←
$a } } k e y s
8 %hash_count ) {
9 my $ acessos = $ hash_count { $ line } ;
10 p r i n t ” i p : $ l i n e t a c e s s o s : t $ a c e s s o s n” ;
11 }
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
35. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Achando arquivo duplicados
1 my @targets = ( ' /home/ l o r n / f o o / ' ) ;
2 my $ tree = File : : Find : : Object−>new ( { } , @targets ) ;
3 my %hash_file = ( ) ;
4 my $ md5 = Digest : : MD5−>new ;
5 w h i l e (my $ r = $ tree−>n e x t ( ) ) {
6 i f ( −d $ r ) {
7 next ;
8 }
9 open (my $ file , '< ' , $ r ) or d i e ” $ ! n” ;
10 $ md5−>addfile ( $ file ) ;
11 my $ digest = $ md5−>hexdigest ;
12 c l o s e $ file ;
13 my @files = ( $ r ) ;
14 pu sh ( @ { $ hash_file { $ digest } } , $ r ) ;
15 }
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
36. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Achando arquivo duplicados
1 f o r e a c h my $ md5hex ( s o r t { $ hash_file { $ a } <=> $ hash_file {←
$b } } k e y s
2 %hash_file ) {
3 i f ( s c a l a r ( @ { $ hash_file { $ md5hex } } ) > 1 ) {
4 p r i n t ” A r q u i v o d u p l i c a d o ! n” ;
5 f o r e a c h my $ file ( @ { $ hash_file { $ md5hex } } ) {
6 p r i n t ” f i l e : $ f i l e n” ;
7 }
8 }
9 }
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
37. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Achando arquivo duplicados
1 $ VAR1 = {
2 ' 4 b 1 a 7 8 5 a 1 d d 6 d b 7 b 5 e 4 f 8 6 c 7 e 5 6 c 2 d 1 d ' =>
3 [
4 '/ Users / lo r n / foo / arquivo2 . txt ' ,
5 '/ Users / lo r n / foo / arquivo23 . txt '
6 ],
7
8 ' 3789 f a 4 8 9 8 d 7 b 7 f 1 5 1 3 c 8 a d 3 9 6 5 c 3 f 9 a ' =>
9 [
10 '/ Users / lo r n / foo / arquivo1 . txt ' ,
11 '/ Users / lo r n / foo / arquivo11 . txt ' ,
12 ' / U s e r s / l o r n / f o o /tmp/ a r q u i v o 4 2 . t x t '
13 ]
14 };
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
38. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Automatizando tarefas
Qualquer programa com opcao de include, pode ser
automatizado
Apache, Samba, Bind
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
39. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Automatizando tarefas
Qualquer programa com opcao de include, pode ser
automatizado
Apache, Samba, Bind
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
40. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
41. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
42. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
43. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
44. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
45. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
46. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
47. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
48. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
49. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
50. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
51. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Nenhuma linguagem carrega dados no banco, mais rapido que
o proprio banco
pg copy ( PostgreSQL ) , impdmp ( Oracle )
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Limpeza de caracteres ’ ?’
dupla dinamic ord - chr
ord: descobre o ”id” do caracter estranho
chr: recebe o ”id” do caracter e retorna o mesmo
my $id estranho = ord(371);
my $char estranho = chr($id estranho);
my $texto sujo = s/$char estranho//g;
Validar os dados de entrada ( CNPJ, CPF, etc )
Business::BR::CNPJ Business::BR::CPF
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
52. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Spreadsheet::Write tamb´m funciona bem com SELECT
e
... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel”
a
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
53. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Spreadsheet::Write tamb´m funciona bem com SELECT
e
... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel”
a
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
54. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Spreadsheet::Write tamb´m funciona bem com SELECT
e
... ou seja, n˜o precisa gerar um .csv e carregar no seu ”Excel”
a
..mas vocˆ pode modificar o que ser´ carregado antes de usar
e a
o proprio banco
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
55. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Extract, transform, loading
Pequel ETL
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
56. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
PL/Perl - PL/PerlU
Palesta do David Fetter ( http://fetter.org )
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
57. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Data Cleaning
Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
rato - ralo
rodar - rodo
Algorithm::LCS
Algoritmo usado no diff de codigos
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
58. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Data Cleaning
Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
rato - ralo
rodar - rodo
Algorithm::LCS
Algoritmo usado no diff de codigos
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
59. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Data Cleaning
Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
rato - ralo
rodar - rodo
Algorithm::LCS
Algoritmo usado no diff de codigos
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
60. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Data Cleaning
Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
rato - ralo
rodar - rodo
Algorithm::LCS
Algoritmo usado no diff de codigos
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
61. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Data Cleaning
Text::Levenshtein ( Edit Distance ou Levenshtein Distance )
rato - ralo
rodar - rodo
Algorithm::LCS
Algoritmo usado no diff de codigos
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
62. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Bibliografia e coisas interessantes
Cultured Perl: Automating UNIX system administration with Perl
Cultured Perl: One-liners 101
Sending Apache httpd Logs to Syslog
http://www.lornlab.org/ palestra yapc2009/
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
63. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Obrigado
Duvidas?
lorn at lornlab dot org
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s
64. Introdu¸˜o
ca
Sysadmin
DBA
Considera¸˜es finais
co
Obrigado
Duvidas?
lorn at lornlab dot org
Lindolfo ”Lorn” Rodrigues Perl para Sysadmins e DBA’s