<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Bom dia, Breno!</DIV>
<DIV>&nbsp;</DIV>
<DIV>Quanta gentileza!</DIV>
<DIV>Nem sei como agradecer esse 'empurrão'.</DIV>
<DIV>Eu li sim o manual, e tive um pouco de dificuldade para entender como 'pegava' e 'imprimia' os campos que eu precisava.</DIV>
<DIV>Agora sim, consegui entender e isso vai me ajudar muito, pois ainda tenho muito o que incrementar no meu código.</DIV>
<DIV>Mais uma vez, obrigada e tenha um ótimo dia.</DIV>
<DIV>&nbsp;</DIV>
<DIV>[]´s, Juliana</DIV>
<DIV><BR><BR>--- Em <B>qui, 1/10/09, breno <I>&lt;breno@rio.pm.org&gt;</I></B> escreveu:<BR></DIV>
<BLOCKQUOTE style="BORDER-LEFT: rgb(16,16,255) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>De: breno &lt;breno@rio.pm.org&gt;<BR>Assunto: Re: [SP-pm] Uma ajuda no módulo BibTeX<BR>Para: saopaulo-pm@mail.pm.org<BR>Data: Quinta-feira, 1 de Outubro de 2009, 4:27<BR><BR>
<DIV class=plainMail>2009/9/30 Juliana &lt;<A href="http://br.mc562.mail.yahoo.com/mc/compose?to=julianalduque@yahoo.com.br" ymailto="mailto:julianalduque@yahoo.com.br">julianalduque@yahoo.com.br</A>&gt;<BR>&gt;<BR>&gt; Boa tarde Pessoal!<BR>&gt;<BR><BR>Oi Juliana, bem vinda à lista!<BR><BR>&gt; Preciso de uma ajudinha!!<BR>&gt; Não consegui "printar" nada na tela (ainda rsr).<BR>&gt;<BR>&gt; Preciso inicialmente imprimir o título e autores. Estou no caminho certo?<BR><BR>Está sim. Pelo seu código nota-se que vc leu o manual. Infelizmente,<BR>esse módulo segue um modelo de documentação completo porém não muito<BR>ortodoxo ou antenado com boas práticas, o que pode dificultar o<BR>entendimento de iniciantes.<BR><BR>A resposta curta é "vc esqueceu de ler o Text::BibTeX::Entry, que<BR>lista os métodos necessários pra manipular cada entrada dentro do seu<BR>loop".<BR><BR>Abaixo, minha versão, seguida de alguns
 comentários:<BR><BR>----------------8&lt;----------------<BR>#!/usr/bin/perl<BR>use strict;<BR>use warnings;<BR><BR>use Text::BibTeX;<BR><BR>my $bib = Text::BibTeX::File-&gt;new;<BR><BR>$bib-&gt;open('arquivo.bib')<BR>&nbsp; &nbsp; or die "erro abrindo arquivo: $!\n";<BR><BR>$bib-&gt;set_structure('Bib',<BR>&nbsp; &nbsp; &nbsp; &nbsp; sortby&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;=&gt; 'name',<BR>&nbsp; &nbsp; &nbsp; &nbsp; namestyle =&gt; 'full',<BR>&nbsp; &nbsp;&nbsp;&nbsp;);<BR><BR>while (my $entry = Text::BibTeX::Entry-&gt;new($bib) ) {<BR>&nbsp; &nbsp; next unless $entry-&gt;parse_ok;<BR><BR>&nbsp; &nbsp; foreach my $campo ( $entry-&gt;fieldlist ) {<BR>&nbsp; &nbsp; &nbsp; &nbsp; print "$campo: " . $entry-&gt;get($campo) . "\n";<BR>&nbsp; &nbsp; }<BR>}<BR>----------------&gt;8----------------<BR><BR>Note que no exemplo eu usei $entry-&gt;fieldlist pra pegar a lista de<BR>campos disponíveis em cada entrada do arquivo bibtex. Se você só quer<BR>título e
 autor, pode fazer algo como:<BR><BR>----------------8&lt;----------------<BR>&nbsp; &nbsp; foreach my $campo ( qw( title author ) ) {<BR>&nbsp; &nbsp; &nbsp; &nbsp; print "$campo: " . $entry-&gt;get($campo) . "\n";<BR>&nbsp; &nbsp; }<BR>----------------&gt;8----------------<BR><BR>ou simplesmente:<BR><BR>----------------8&lt;----------------<BR>&nbsp; &nbsp; print "titulo: " . $entry-&gt;get('title')&nbsp; &nbsp;&nbsp;&nbsp;. "\n";<BR>&nbsp; &nbsp; print "autor: " . $entry-&gt;get('author') . "\n";<BR>----------------&gt;8----------------<BR><BR>Agora, vamos destrinchar rapidamente as diferenças:<BR><BR>* "use strict; use warnings;" - é muito importante que essas sejam<BR>sempre as primeiras duas linhas dos seus programas. Elas garantem que<BR>eventuais erros de código sejam facilmente identificados (e<BR>corrigidos). Ao fazer isso, preste atenção para declarar suas<BR>variáveis antes de usá-las (essencialmente, escreva "my $var" ao usar<BR>$var
 pela primeira vez). Ah, uma dica: no inicio, as vezes é legal<BR>também botar uma terceira linha, com "use diagnostics", que vai pegar<BR>os erros gerados e exibir um pequeno texto informativo sobre o<BR>problema, com dicas sobre o que pode ter acontecido e recomendações<BR>para solucionar.<BR><BR>* "Modulo-&gt;new" x "new Modulo" - sim, a sintaxe indireta é a usada na<BR>documentação do Text::BibTeX, mas não é recomendada. Acontece que<BR>"new" não é uma palavra reservada do Perl e sim um método como<BR>qualquer outro, que por acaso (ou melhor, por convenção) chama-se<BR>"new" e age como construtor do objeto. Se houver uma palavra reservada<BR>do Perl (uma função, por exemplo) com o mesmo nome do método que vc<BR>quer chamar, ou mesmo uma sub no seu código com aquele mesmo nome, ela<BR>terá preferência e seu programa não vai fazer o que você quer. Por<BR>isso, para chamar métodos de classes/objetos, utilize sempre a
 notação<BR>direta Modulo-&gt;metodo.<BR><BR>* "|| x or" - ambos são ou lógico, então é um pouco questão de gosto.<BR>Mas o "or" foi desenhado especialmente para ter a precedência mais<BR>baixa possível, de modo que, além de facilitar a legibilidade, ele é<BR>sempre a última coisa a ser avaliada na expressão, fazendo o que você<BR>quer (processa expressao e, se ela for undef, faz o que está do outro<BR>lado do or). Para o exemplo simples "open or die" tanto faz, mas em<BR>situações mais complexas ele pode ser bem mais útil, então acho q vale<BR>a pena ir se acostumando. Repare ainda na identação, quebrando a linha<BR>e dando um tab entre a expressão e o "or X". Ela também é questão de<BR>gosto, mas acho q facilita a leitura e compreensão do código manter as<BR>principais declarações à esquerda (o Damian Conway explica no Perl<BR>Best Practices que trata-se do "end-weight problem").<BR><BR>* "namestyle =&gt; 'full'," &lt;--
 (colocar vírgula ao final de listas) - em<BR>Perl as vírgulas em listas são apenas separadores de valores, sem<BR>nenhum significado maior. Isso significa que você pode utilizar as<BR>vírgulas como "terminadores" para seus elementos, o que facilita muito<BR>não só na inclusão de novos elementos (já que você não precisa mudar<BR>nada na linha anterior) como a reordenação da lista (vc pode trocar o<BR>último elemento com outro lá na meiúca diretamente, sem precisar se<BR>preocupar com adicionar/remover vírgulas).<BR><BR><BR>É isso. Espero ter ajudado. Qq dúvida tamos aí :-)<BR><BR>Ah, já ia esquecendo. No primeiro dia do YAPC::Brasil (dia 30 de<BR>outubro agora) haverão palestras voltadas especificamente para o<BR>público iniciante, incluindo dois minicursos - um de introdução ao<BR>Perl com o Samir e outro de Expressões Regulares com a Mila. Muita<BR>gente de São Paulo já veio me procurar dizendo que vai (alguns até
 se<BR>pronunciaram aqui na lista mesmo!) então de repente você consegue vir<BR>com a "caravana", ou quem sabe até junta um povo da FUG pra vir também<BR>- quanto mais melhor (sem falar que barateia o hotel)!<BR><BR><BR>[]s<BR><BR>-b<BR><BR>&gt; Quando tentava fazer diretamente sem utilizar o&nbsp;módulo do BibTeX era mais fácil.. agora com o módulo, é como começar do zero de novo..<BR>&gt;<BR>&gt; #!/usr/local/bin/perl<BR>&gt;<BR>&gt; &nbsp;&nbsp; use Text::BibTeX;<BR>&gt; &nbsp;&nbsp; $bib = new Text::BibTeX::File;<BR>&gt; &nbsp;&nbsp; $bib-&gt;open ("arquivo.bib") || die "Arquivo nao Encontrado: $!\n";<BR>&gt; &nbsp;&nbsp; $bib-&gt;set_structure ('Bib',<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sortby =&gt; 'name',<BR>&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; namestyle =&gt; 'full');<BR>&gt;<BR>&gt; &nbsp;&nbsp; while ($entry = new Text::BibTeX::Entry $bib)<BR>&gt; &nbsp;&nbsp; {<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print $entry; #aqui devo imprimir titulo e autor<BR>&gt; &nbsp;&nbsp;&nbsp; }<BR>&gt;<BR>&gt; &nbsp;&nbsp; $at_eof = $bib-&gt;eof;<BR>&gt; &nbsp;&nbsp; $bib-&gt;close;<BR>&gt;<BR>&gt; Que comando faz imprimir na tela? rs<BR>&gt;<BR>&gt; Obrigada!<BR>&gt; Juliana<BR>&gt;<BR>&gt; ________________________________<BR>&gt; Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes<BR>&gt; _______________________________________________<BR>&gt; SaoPaulo-pm mailing list<BR>&gt; <A href="http://br.mc562.mail.yahoo.com/mc/compose?to=SaoPaulo-pm@pm.org"
 ymailto="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</A><BR>&gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>_______________________________________________<BR>SaoPaulo-pm mailing list<BR><A href="http://br.mc562.mail.yahoo.com/mc/compose?to=SaoPaulo-pm@pm.org" ymailto="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</A><BR><A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR></DIV></BLOCKQUOTE></td></tr></table><br>


      <hr size=1>Veja quais são os assuntos do momento no Yahoo! + Buscados: <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/">Top 10</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/">Celebridades</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/">Música</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/">Esportes</a>