# Caso a formula '[1]' seja verdadeira, executa os próximos comandos if\((.*)\)\ *\{ #\!\/usr\/bin\/perl ####################################################### #\!\/usr\/bin\/perl # Código comentado pelo script 'comenta' # #!/usr/bin/perl # Feito por Fernando Corrêa de Oliveira # #!/usr/bin/perl ####################################################### #!/usr/bin/perl #!/usr/bin/perl # Caso a formula '[1]' seja verdadeira, executa os próximos comandos ^\s*if\s?\((.*)\)\s*\{? # Caso a formula '[2]' seja verdadeira, executa o comando '[1]' ^\s*(.*)\ if\ ?\(?(.*)\)?\s?; # A não ser que a formula '[1]' seja verdadeira, executa os próximos comandos ^\s*unless\ ?\(?(.*)\)?\ *\{ # A não ser que a formula '[2]' seja verdadeira, executa o comando '[1]' ^\s*(.*)\ unless\ ?\(?(.*)\)?\ *; # Enquanto a expressão '[1]' for verdadeira... while\s?\((.*)\)\s?\{? # Para a expressão '[1]' for\s?\((.*)\)\s?\{ # '[1]' => o mesmo que: '[2] = [2] + [3]' ((\$\w)+\+=(\d+)) # Abre o arquivo '[2]' com o titulo '[1]' open\((.*)\ ?\,\ ?(.*)\) # Retira o '\n' do final da variavel [1] chomp\((\$.*)\) # Fecha o arquivo com o titulo '[1]' close\(?\ ?(.*)\)?\ ?; # Usuario [1] com UID [3] e home [6] (.*):(x?):(.*):(.*):(.*):(.*):(.*) # Para a cada um dos argumentos de '[1]' faça foreach\ *\((.*)\)\ *{ # Para [1] sendo igual a cada um dos argumentos de '[2]' faça foreach\ *($.*)\ \((.*)\)\ ?{ # '[1]' => de [2] até [3] (([0-9]+)\ ?\.\.\ ?([0-9]+)) # '[1]' recebe o parametro passado na chamada da função \((\$.*)\)=\@_ # [1] => '[2]' recebe o 1º parametro passado na chamada do programa excluindo-o ((\$.*)=shift) # Declaração da variavel '[1]' local my\s*(\$\w*); # Declaração da variavel '[1]' global our\s*(\$\w*); # [1] => Declaração da variavel '[2]' local contendo '[3]' (my\s*(\$\w+)=(.*)); # [1] => Declaração da variavel '[2]' global contendo '[3]' (our\s*(\$\w+)=(.*)); # Declaração do hash '[1]' local my\s*(\%\w+); # Declaração do hash '[1]' global our\s*(\%\w+); # [1] => Valor da posição '[3]' do hash %[2] (\$(\w+)\{(.+)\}) # return() => Sai da função return\ ?\(?\ ?\)? # return([1]) => Sai da função com '[1]' como valor de retorno return\ ?\(?\ (.*)\ ?\)? # Como a função já diz: Usa o módulo '[1]' ^use\s+(.+); ############################### Função '[1]' ####################### ^\s*sub (\w*\(?\)?)\ *\{?$ # [1] => Testa a expressão regular '[3]' na variavel '[2]' \s?((\$\w+)\s?=~\s?(\/.+\/)) # [1] => Reconhece qq tipo de espaço, como branco, tabulação ou quebra de linha \s?\$\w+\s?=~\s?\/.*(\\s).*\/ # [1] => Reconhece qq letra \s?\$\w+\s?=~\s?\/.*(\\w).*\/ # [1] => Reconhece qq palavra \s?\$\w+\s?=~\s?\/.*(\\W).*\/ # [1] => Reconhece qq numero \s?\$\w+\s?=~\s?\/.*(\\d).*\/ # [1] => Reconhece qq coisa entre '[2]' e '[3]' \s?\$\w+\s?=~\s?\/.*(\[(\w|\d)\-(\w|\d)\]).*\/ # [1] => A expressão '[2]' deve aparecer entre [3] e [4] vezes \s?\$\w+\s?=~\s?\/.*(([\[|\(].+[\]|\)])\{(\d),(\d)\}).*\/ # [1] => A expressão '[2]' deve aparecer entre [3] e [4] vezes \s?\$\w+\s?=~\s?\/.*((\\.)\{(\d),(\d)\}).*\/