Perl Brasil

Pesquisar

Documentação

Artigos

Planeta

Eventos

Comunidade

r3 - 16 Jan 2008 - JoenioCosta

Receitas

Instalando o DBD::Oracle com o instant client + sdk

08 Dec 2008 - 11:46, por André Garcia Carneiro

Problema Instalar o DBD::Oracle Solução Instalar o instant client ao invés do client completo, configurar o ambiente e compilar o DBD::Oracle Discussão Introdução Frequentemente vejo em listas de perl a dificuldade de muitas pessoas em instalar o DBD::Oracle, ou porque não conseguem instalar o pr ... ver artigo completo

Como fazer parsing de HTML

28 Nov 2008 - 13:50, por André Garcia Carneiro(chacal)

Problema Extrair informacões de um arquivo HTML Solução use HTML::TreeBuilder Discussão Você poderia usar uma simples expressão regular para extrair informacões de um arquivo HTML. Mas, porque fazer isso se existe um módulo que permite ir diretamente à informacão desejada? O HTML::TreeBuilder faz o ... ver artigo completo

Exibir caracteres UTF-8 no Windows

24 Oct 2007 - 15:53, por Alceu Rodrigues de Freitas Junior

Problema Você está trabalhando com dados codificados em UTF 8 mas o terminal do Windows não consegue exibir o texto corretamente. Solução Basta mudar a codificação de página do terminal do Windows para 65001. Discussão Certo, isso não é exatamente uma receita de Perl, mas o problema é freqüente o bastante ... ver artigo completo

Como descobrir se um item está contido em um array?

13 Mar 2006 - 17:17, por perlfaq4

Problema Você quer descobrir se um determinado elemento está contido dentro de um array. Solução Use um hash. Discussão Sempre que você ler a expressão "contido em", esta é uma indicação de que você deveria ter usado um hash ao invés de um array. O hash permite descobrir esta informação imediatamente ... ver artigo completo

Como ler arquivos codificados em UTF-16

24 Oct 2007 - 15:46, por Alceu Rodrigues de Freitas Junior

Problema Você está tentando ler um arquivo texto codificado em UTF 16 mas está recebendo mensagens de aviso com "wide character" mesmo já tendo informado que o arquivo está codificado em UTF 16. Solução A implementação do Perl para lidar com UTF 16 desconsidera a presença de BOM ( Bit Order Mark ... ver artigo completo

Fazendo um HelloWorld falar vários idiomas

20 Jun 2007 - 16:27, por JoenioCosta

Problema Como fazer um sistema com suporte a L10N? Você precisa que seu sistema tenha suporte a vários idiomas e que novos idiomas sejam adicionados a qualquer momento? Solução Utilize o módulo em conjunto com http://search.cpan.org/~audreyt/Locale Maketext Lexicon Locale::Maketext::Lexicon. Discuss ... ver artigo completo

Como ler arquivos do Excel mais rapidamente

18 Jul 2007 - 20:39, por Alceu Rodrigues de Freitas Junior

Problema Você quer ler um arquivo do MS Excel com grande quantidade de registros e colunas com Win32::OLE mas o resultado é mais lento do que você gostaria. Solução Use o método Range para obter todos os valores das linhas/colunas de uma só vez. Discussão Ao invés de utilizar dois loops dentro ... ver artigo completo

Como criar arquivos PDF utilizando Template-Toolkit

23 May 2007 - 21:08, por JoenioCosta

Problema Voce precisa gerar arquivos PDF através do sistema de templates Template Toolkit . Solução Utilize o plugin Template::Plugin::Latex. Discussão Esta pode não ser a forma mais fácil e rápida de criar PDFs utilizando Perl, mas com certeza é uma grande vantagem para quem já conhece a linguagem ... ver artigo completo

Como criar um array de n elementos iguais

08 May 2007 - 09:38, por Nelson Ferraz

Problema Você quer criar uma array com "n" elementos iguais. Solução my @foo (1) x 100; Discussão Para criar um array pequeno, os valores poderiam ser definidos individualmente: my @foo (1, 1, 1, 1, 1, 1, 1, 1, 1); A desvantagem desse método, para além do fato de exigir tantas entradas quantas ... ver artigo completo

Parse de Endereços em Perl

23 Mar 2007 - 10:55, por Daniel Ruoso

A partir de uma discussão na cascavel pm (http://mail.pm.org/pipermail/cascavel pm/2007 March/009129.html), discutimos como fazer ETL de Endereços em uma base de dados não estruturada para uma base de dados com o endereço estruturado. Definindo o problema Para definir o problema, vamos definir um conjunto ... ver artigo completo

Gerar uma cadeia de caracteres aleatoriamente

26 Dec 2006 - 14:07, por EdenCardim

Problema Você precisa criar uma string aleatória e arbitrariamente longa contendo um certo conjunto qualquer de caracteres prédefinidos. Solução Mapeie cada elemento de um array com o tamanho da string (em caracteres) que você deseja obter para um caracter obtido aleatoriamente do conjunto de caracteres ... ver artigo completo

Como descobrir a diferença ou a intersecção entre dois arrays

13 Mar 2006 - 18:01, por perlfaq4

Problema Você precisa descobrir quais elementos de uma lista estão presentes em uma outra lista; ou quais elementos estão presentes em apenas uma das listas. Solução Use um hash. Discussão Sempre que você estiver lidando com conjuntos (o que é frequentemente indicado por expressões tais como "presente ... ver artigo completo

Como pesquisar os valores de um hash?

06 Aug 2006 - 15:20, por perlfaq4

Problema Você gostaria de pesquisar os valores (e não as chaves!) de um hash. Solução Crie um hash reverso. Discussão Para criar um hash reverso: %by value reverse %by key; $key $by value{$value}; Isso pode não ser muito eficiente por duplicar a quantidade de dados. Se isso for um problema ... ver artigo completo

Como remover os elementos duplicados de uma lista

06 Aug 2006 - 15:18, por perlfaq4

Problema Você precisa remover todos os elementos duplicados de uma lista. Solução Use um hash. Discussão Se a sua lista está ordenada, você pode remover os elementos iguais adjacentes (semelhante ao uniq do unix): undef $prev; @out grep($ ne $prev ($prev $ , 1), @in); Na maioria dos ... ver artigo completo

Como obter n caracteres de uma string

06 Aug 2006 - 15:06, por Igor Sutton Lopes

Problema Como faço para obter n caracteres de uma string? Solução Use substr() ou pack(). Discussão substr() permite obter ou mesmo modificar um pedaço de uma string: # substr EXPR,OFFSET,LENGTH # substr EXPR,OFFSET print substr(qwerty, 0, 3); # imprime "qwe" print substr(qwerty, 0, 3 ... ver artigo completo

Como comparar duas datas

06 Aug 2006 - 15:03, por perlfaq4

Problema Você quer encontrar a diferença entre duas datas. Solução Converta as datas para "epoch seconds", ou use o módulo Date::Calc. Discussão Se você está guardando suas datas em segundos desde a época ("epoch seconds"), você pode simplesmente substituir uma da outra. Se você tem uma data estruturada ... ver artigo completo

.vimrc para perl

06 Aug 2006 - 15:01, por Nelson Ferraz

Problema Você quer recursos como realce de sintaxe (syntax highlighting) , identação automática e autocompletar. Solução Configure o arquivo .vimrc no seu diretório $HOME. Discussão Existem inúmeras configurações possíveis com o vim. Este arquivo .vimrc ativa algumas delas: " " general preferences ... ver artigo completo

Como ler um caractere

06 Aug 2006 - 14:54, por perlfaq5

Problema Você quer que o programa leia um caractere da entrada padrão, ou de outro filehandle. Solução use Term::ReadKey; Discussão Term::ReadKey is a compiled perl module dedicated to providing simple control over terminal driver modes (cbreak, raw, cooked, etc.,) support for non blocking reads, if ... ver artigo completo

Como ler o conteúdo de um arquivo de uma vez

06 Aug 2006 - 14:52, por perlfaq5

Problema Você quer ler um arquivo inteiro e colocá lo na memória. Solução @file ; ou use File::Slurp; Discussão Antes de continuar a leitura, é importante considerar o seguinte: você tem certeza de que de precisa colocar todo o conteúdo do arquivo na memória, de uma vez? Se isto for realmente necess ... ver artigo completo

Como ler um arquivo por parágrafos

06 Aug 2006 - 14:48, por perlfaq5

Problema Você quer ler um arquivo por parágrafos ("\n\n") ao invés de linhas. Solução Redefina $/. Por exemplo: $/ "\n\n"; Discussão A variável $/ ($INPUT RECORD SEPARATOR) define o separador de linhas padrão de arquivos. Normalmente o separador é "\n" (exceto no DOS/Windows, onde é "\r\n"), mas ... ver artigo completo

Como fazer um tail -f em perl

06 Aug 2006 - 14:46, por perlfaq5

Problema Você quer que o programa leia fique lendo o final de um arquivo que está sendo continuamente atualizado, à espera de novas linhas. Solução use File::Tail; Discussão O módulo File::Tail permite ler o final de um arquivo enquanto ele está sendo escrito: use File::Tail; $file File::Tail ... ver artigo completo

Como fazer qualquer coisa em Perl

06 Aug 2006 - 14:43, por perlfaq3

Problema Você precisa fazer alguma coisa qualquer coisa em Perl. Solução Leia a documentação. Pesquise o CPAN. Entre no IRC e participe das listas de discussão. Discussão Antes de escrever sua primeira linha de código, veja se você não encontra um módulo correspondente no CPAN: http://search ... ver artigo completo

Como expandir variáveis dentro de uma string

08 Mar 2006 - 23:19, por perlfaq4

Problema Você tem uma string contendo nomes de variáveis que não foram expandidas: $text 'foo é $foo e bar é $bar'; ...e gostaria de substituir as variáveis por seus valores em tempo de execução. Solução Coloque as variáveis dentro de um hash e use a expressão regular para substitui las por seu valor ... ver artigo completo

Como tornar expressões regulares mais legíveis

06 Aug 2006 - 14:29, por perfaq6

Problema Expressões regulares normalmente são difíceis de ler. Como torná las mais legíveis? Solução Use delimitadores diferentes; utilize o sufixo /x. Discussão Quando precisamos lidar com padrões que incluem o caractere "/", podemos mudar o delimitador para tornar a expressão regular mais clara: ... ver artigo completo

Como detectar e tratar erros em tempo de execução

06 Aug 2006 - 14:26, por Nelson Ferraz

Problema Você quer detectar e tratar erros em tempo de execução, de forma que seu programa não seja interrompido. Solução Use eval{} para executar o código; se houver algum erro, ele será capturado na variável de erro $@. Discussão Se você executar o código: open FILE, "arquivo.txt" or die "Erro ... ver artigo completo

Como criar estruturas de dados complexas

06 Aug 2006 - 14:18, por perlfaq4

Problema Você precisa lidar com uma estrutura de dados composta por diversas combinações de escalares, arrays e hashes. Solução Use referências. Discussão Normalmente uma referência para um hash, como por exemplo: $record { NAME "Jason", EMPNO 132, TITLE ... ver artigo completo

Como modificar uma linha específica de um arquivo

28 Jul 2006 - 02:42, por perlfaq5

Problema Você quer modificar uma linha específica de um arquivo texto. Solução use Tie::File; Discussão O módulo Tie::File permite acessar as linhas de um arquivo como se fossem um array. A primeira linha do arquivo é o elemento 0 do array; a segunda linha é o elemento 1, e assim por diante. Mudan ... ver artigo completo

Como converter números para valores por extenso

06 Aug 2006 - 14:06, por Nelson Ferraz

Problema Você tem um número e deseja convertê lo para palavras em língua portuguesa. (Por exemplo: 999 novecentos e noventa e nove) Solução use Lingua::PT::Nums2Words; Discussão Nums2Words converte número para palavras em língua portuguesa. Trabalha com números de 0 até 999.999.999.999.999 (de ... ver artigo completo

Como copiar um arquivo

28 Jul 2006 - 02:45, por perlfaq5

Problema Você precisa copiar um arquivo. Solução use File::Copy; Discussão A primeira solução que poderia vir à mente é usar uma chamada ao sistema operacional (system() ou backticks). Mas esta solução não é portável. A melhor solução é usar o módulo File::Copy, que vem com Perl e pode fazer uma c ... ver artigo completo

Como processar um arquivo com conteúdo do tipo "chave: valor"

09 Mar 2006 - 18:56, por Igor Sutton Lopes

Problema Precisamos processar um arquivo com este conteúdo: nome: Fulano de Tal email: tal.fulano #64;empresa.com url: http://www.empresa.com nome: Beltrano de Outrem email: outrem.beltrano #64;outraempresa.com.br url: http://www.outraempresa.com.br Solução Você pode utilizar uma estrutura de hashes ... ver artigo completo

Como contar o número de ocorrências de uma string

06 Mar 2006 - 22:52, por perlfaq4

Problema Você quer saber quantas vezes uma string aparece dentro de uma outra. Solução Use uma expressão regular global e conte o número de ocorrências. Discussão O que você pode fazer é colocar um while() ao redor de uma expressão regular de substituição global. Por exemplo, vamos contar os números ... ver artigo completo

Como comparar duas datas

06 Mar 2006 - 22:44, por perlfaq4

Problema Você quer encontrar a diferença entre duas datas. Solução Converta as datas para "epoch seconds", ou use o módulo Date::Calc. Discussão Se você está guardando suas datas em segundos desde a época ("epoch seconds"), você pode simplesmente substituir uma da outra. Se você tem uma data estruturada ... ver artigo completo

Faça uma Busca para outros artigos.

Publique uma Nova Receita

Uma receita deve seguir o padrão do Perl Cookbook: um título ("como fazer xyz"), a descrição do problema ("você quer fazer xyz"), a solução ("use Foonly Flurbamatic"), e a discussão da solução (explicando os detalhes da solução). Observe que "problema" e "solução" devem ser curtos, todos os detalhes entram na discussão.

Título
Autor
Problema
Solução
Discussão
!TopicName Use um WikiName curto e descritivo

Dica: coloque o código dentro de tags <verbatim>...</verbatim>