[SP-pm] Auxilio em código

Juliana julianalduque at yahoo.com.br
Sat Nov 7 08:12:16 PST 2009


Olá Luis.
Fico agradecida pela sua resposta.
Realmente reparei que vem essa linha antes automaticamente quando faço o download de qualquer citação na web.
A leitura do arquivo deveria começar sempre pelo início, que pelo que percebi sempre é '%0'.
Teria como tratar isso?
 
Obrigada
Juliana
 
 


--- Em sáb, 7/11/09, Luis Motta Campos <luismottacampos em yahoo.co.uk> escreveu:


De: Luis Motta Campos <luismottacampos em yahoo.co.uk>
Assunto: Re: [SP-pm] Auxilio em código
Para: saopaulo-pm em mail.pm.org
Data: Sábado, 7 de Novembro de 2009, 12:04


Juliana wrote:
> Olá lista Perl! bom dia!
> Preciso de uma dica de vocês..
> Preciso extrair (imprimir) algumas informações do arquivo .enw (endnote). Olhem meu código em anexo; e também anexei um exemplo de arquivo.enw
> Dúvida 1: está dando essa mensagem de erro ao 'compilar':
> refer: l.1: line outside record: <
> Dúvida 2: Neste trecho de código:
>   my @authors    = $ref->author;     
>   my $lastAuthor = $ref->author;
>   my $firstAuthor = $ref->author;
> Está correto isso para eu 'pegar' e imprimir somente o primeiro e o último autor da lista de autores?

Juliana,

O seu programa não é robusto o bastante para suportar
dados mal-formados. Os seus dados, por sua vez, estão muito mal
formados: a primeira linha do arquivo 4.enw contém
"<\x{9}\x{9}\x{9}\x{9}\x{9}\x{9}\x{9}\x{9} \x{9}\x{9}\x{9}>", que
não é exatamente o que o módulo Text::Refer espera como entrada de
dados. Assim, como nem o seu programa nem o módulo que você usa
verificam seus dados, erros inesperados acontecem sempre que você
alimenta dados ruins para o seu programa.

Para resolver o problema e fazer seu programa funcionar corretamente,
eu removi a primeira linha do arquivo à mão. Uma solução mais robusta
incluiria algum tipo de conferência de syntaxe (os termos técnicos são
"tokenization" e "parsing") antes de qualquer tentativa de processar o
arquivo.

Sobre a forma correta de imprimir o primeiro e o último autor: sua tentativa é estranha, já que você faz chamadas demais para $ref->author (que eu presumo ser uma função do Text::Refer que retorna uma lista de autores).

Para obter o primeiro e o último elemento de uma lista em Perl existem muitas formas, mas a minha favorita é esta:

my ( $first, $last ) = ( $ref->author )[0,-1];

Espero que isso ajude.
Putamplexos
--
Luis Motta Campos is a software engineer,
Perl junkie, foodie and amateur photographer.



      
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm



      ____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20091107/4c983e65/attachment-0001.html>


More information about the SaoPaulo-pm mailing list