User Tools

Site Tools


spln2016:dirio3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
spln2016:dirio3 [2016/03/04 20:37] – created ambsspln2016:dirio3 [2016/03/09 17:45] (current) ambs
Line 1: Line 1:
 ====== SPLN ====== ====== SPLN ======
  
-==== Diário de Bordo - Aula 3 - 2016-03-01 ====+==== Diário de Bordo - Aula 3 - 2016-02-29 ====
  
 === Sumário === === Sumário ===
Line 8: Line 8:
    * Script para criar nova pasta por aula    * Script para criar nova pasta por aula
      * Atribuir permissões ao script      * Atribuir permissões ao script
-* Expressões regulares  +   * Expressões regulares  
-* Operadores sobre vários tipos de dados  +   * Operadores sobre vários tipos de dados  
-  * Arrays Associativos +     * Arrays Associativos 
-  * Vetores +     * Vetores 
-  * Apontadores +     * Apontadores (referências!) 
-* Funções Anonimas +   * Funções Anónimas 
-* Perl Open() +   * Perl Open() 
-* Bash scripts +   * Bash scripts 
-* Perl scripts+   * Perl scripts 
 + 
 +=== Conteúdo ===
  
- Enviroment $PATH+Enviroment $PATH
    
- para adicionar mais um caminho podemos: + para adicionar mais um caminho podemos: 
-  * executar comando $export PATH='~/bin':$PATH, para adicionar a pasta /bin que se encontra na home folder. Esta alteração funciona apenas na sessão activa. +   * executar comando $export PATH='~/bin':$PATH, para adicionar a pasta /bin que se encontra na home folder. Esta alteração funciona apenas na sessão activa. 
-  * para tornar esta alteração permanente linuxmint basta adicionar "export PATH='~/bin':$PATH" ao ficheiro: +   * para tornar esta alteração permanente linuxmint basta adicionar "export PATH='~/bin':$PATH" ao ficheiro: $sudo vim /etc/bash.bashrc 
- $sudo nano /etc/bash.bashrc +
  
  
Line 40: Line 41:
  $chmod +x <filename>  $chmod +x <filename>
  
-Expressões Regulares +**Expressões Regulares **
  
 Para fazer match do caracter espaço, utiliza-se o seguinte : Para fazer match do caracter espaço, utiliza-se o seguinte :
 +
  \s é equivalente a  [ \t\n]  \s é equivalente a  [ \t\n]
  \S é equivalente a  [^ \t\n]  \S é equivalente a  [^ \t\n]
  
 Utilização do Default input and pattern-searching space: Utilização do Default input and pattern-searching space:
 +
  while( $_ =~ /\S/){...}  while( $_ =~ /\S/){...}
  
  while( /\S/ ){...}  while( /\S/ ){...}
 +
 Esta expressão regular apanha todas as linha nao vazias. Esta expressão regular apanha todas as linha nao vazias.
 Para aceder a campos da expressão regular que fez match utilizamos a seguinte sintax: Para aceder a campos da expressão regular que fez match utilizamos a seguinte sintax:
 +
  /(\w+)\s+(.+)/  /(\w+)\s+(.+)/
 +
 onde as expressões que estão dentro de parênteses curvos são acessiveis através de das variáveis $1..$9. onde as expressões que estão dentro de parênteses curvos são acessiveis através de das variáveis $1..$9.
  
 +**Operadores sobre vários tipos de dados**
  
-* Operadores sobre vários tipos de dados  +Consultar Capiulo 14. do Quick Reference Guide fornecido. 
- Consultar Capiulo 14. do Quick Reference Guide fornecido. + 
- ** Arrays Associativos+  * Arrays Associativos
  
  %a - array associativo   %a - array associativo 
Line 65: Line 72:
  $delete($a{v3})  $delete($a{v3})
  
-** Vetores +  * Vetores
- @l - vetor +
- unshift(@l, elem ) - insere elemento no inicio do vetor +
- elem = shift(@l) - retira elemento do inicio do vetor +
- push(@l, elem) - insere elemento no final do vetor  +
- elem = pop(@l) - retira elemento do final do vetor +
- $l[3] - accesso para o terceiro elemento da lista +
- $l+0 = comprimento da lista +
- @l = split(/a/,"batata") - retorna lista com elementos b,t,t +
- join(',',1..10) - retorna string "1,2,3,4,5,6,7,8,9,10" +
- join(',',@l) - retorna string "$l[0],$l[1],....$l[n]" +
- +
  
-** Apontadores +        @l - vetor 
- \@l - devolve apontador para o vetor +        unshift(@l, elem ) insere elemento no inicio do vetor 
- \%a devolve apontador para array associativo +        elem = shift(@l) retira elemento do inicio do vetor 
- \&$apontador para função +        push(@l, elem) - insere elemento no final do vetor  
- @= (1,[3,4]) ,  $x[1][1= 3+        elem = pop(@l) - retira elemento do final do vetor 
 +        $l[3] accesso para o terceiro elemento da lista 
 +        $l+0 = comprimento da lista 
 +        @split(/a/,"batata") - retorna lista com elementos b,t,t 
 +        join(',',1..10) - retorna string "1,2,3,4,5,6,7,8,9,10" 
 +        join(',',@l- retorna string "$l[0],$l[1],....$l[n]"
  
 +  * Referências
  
-* Funções Anonimas+ \@l - devolve referência para o vetor 
 + \%a - devolve referêcia para array associativo 
 + \&$f - referência para função 
 + @x = (1,[3,4]) ,  $x[1][1] = 3
  
- $sub{ ... } - função anonima+  * Funções Anonimas
  
 + $x = sub{ ... } - função anonima
  
- * Perl Open()+  * Perl Open()
  
  open(F,"<","/var/log/messages") - abre ficheiro /var/log/messages para leitura  open(F,"<","/var/log/messages") - abre ficheiro /var/log/messages para leitura
- + 
 +  * Open de IPC (inter process communication: pipes) 
  #!/usr/bin/perl  #!/usr/bin/perl
  
Line 99: Line 107:
  while (<>) {  while (<>) {
  print  "$. $_";   print  "$. $_"; 
- 
  }  }
  close (F);  close (F);
Line 111: Line 118:
  #!/usr/bin/perl  #!/usr/bin/perl
  
- open(F, "-|", "ls") or die("Cant open file\n"); +        open(F, "-|", "ls") or die("Cant open file\n"); 
- while (<F>) { +        while (<F>) { 
- print  "$. $_";+            print  "$. $_"
 +        } 
 +        close (F);
  
-+com open(F,"|-","ls") - Estamos a criar um Pipe, O processo 1 pode escrever informação em pipe para o processo 2, usando Descripror 'F'
- close (F); +
- +
- open(F,"|-","ls") - Estamos a criar um Pipe, O processo 1 pode escrever informação em pipe para o processo 2, usando Descripror 'F'+
  
-* Bash script+  * Bash script
  
  for a in {1..20000}; do echo $RANDOM >$a.txt; done  -  cria 20000 ficheiros  for a in {1..20000}; do echo $RANDOM >$a.txt; done  -  cria 20000 ficheiros
   
-*Perl scripts + * Perl scripts
-  * imprime linhas repetidas, ignora linhas vazias +
- #!/usr/bin/perl+
  
 +   * imprime linhas repetidas, ignora linhas vazias
 +
 + #!/usr/bin/perl
 +        
  use warnings;  use warnings;
  use strict;  use strict;
  use utf8::all;  use utf8::all;
 +        
  my %hash; #array associado  my %hash; #array associado
  while (<>) {  while (<>) {
Line 143: Line 151:
  
   *Detetar ficheiros duplicados numa diretoria fornecida como argumento.   *Detetar ficheiros duplicados numa diretoria fornecida como argumento.
 +
  #!/usr/bin/perl  #!/usr/bin/perl
 +        
  use warnings;  use warnings;
  use strict;  use strict;
  use utf8::all;  use utf8::all;
 +        
  my %hash; #array associativo  my %hash; #array associativo
  my $arg =join ( " ",  map{-d $_?"$_/*":$_}@ARGV);  my $arg =join ( " ",  map{-d $_?"$_/*":$_}@ARGV);
spln2016/dirio3.1457120241.txt.gz · Last modified: 2016/03/04 20:37 by ambs