[SP-pm] Problemas com JSON e PERL

Blabos de Blebe blabos at gmail.com
Wed Jun 16 08:23:43 PDT 2010


Bom dia,

Walter, primeiramente bem vindo ao grupo. Eu ainda não o conheço, e
esteja convidado ao nosso próximo ES.

Não interprete mal o que eu vou dizer, ok? Estamos querendo ajudar, ok?

O seu código demonstra um dialeto de 'Jurassic Perl', muito comum no
ambiente acadêmico. Considere bater um papo com o pessoal da lista
sobre coisas mais autais e robustas.

Você abre o arquivo usando 2 argumentos para open, o que apesar de
funcional é desencorajado. Além do mais, você não checa se o arquivo
foi aberto corretamente. Uma forma mais indicada para abrir o arquivo
seria:

open my $fh, '>', 'filemane.json' or die 'Cannot open file';

Você possui permissão de escrita no diretório indicado? Imagino que
sim, já que o arquivo é criado.

Você também encapsula a chamada a print dentro de um bloco eval, mas
não checa se houve algum problema. Uma alternativa seria:

eval {
    code;
}
if ($@) {
    Error handling;
}

De qualquer forma, não vi na documentação do print (perldoc -f print)
nenhuma menção a lançamento de exceções, então acho que o eval é
dispensável aqui.

O print recebe uma lista de argumento e imprime-os no filehandle
indicado, ou stdout se não indicado.

A função length retorna o comprimento da string passada como argumento.

Además há um erro de lógica bem trivial na sua subrotina. Consegue
identificar qual?

Abraços

2010/6/16 Walter Silvestre Coan <w.coan em terra.com.br>:
> Bom dia,
>
> Estou tentando adaptar uma aplicação chamada ScriptLattes
> (http://scriptlattes.sourceforge.net/). Ele é uma aplicação escrita em Perl
> com o objetivo de realizar o download dos dados da Plataforma Lattes, que
> são curriculos academicos de alunos e professores. Uma das novas
> funcionalidades desse script é que os dados baixados são salvos em um
> arquivo .json, possibilitando serem importados para outros formatos ou até
> bancos de dados. O problema é que quando eu rodo esse script no meu ambiente
> (Ubuntu 8.4 server). Ele simplesmente gera o arquivo .json em branco (apesar
> do script realizar as outras tarefas corretamente). O autor do script me
> ajudou e fez alguns testes, e no computador dele esta funcionando
> perfeitamente, gerando os dados no formato json. Acredito que o problema
> esteja no meu ambiente, porém eu ja baixei vários pacotes referentes ao PERL
> e ao JSON mas nada de funcionar.
>
> O codigo que gera o arquivo basicamente é esse:
> sub createJsonFile
> {
>  # Arquivo JSON contendo todas as produções do grupo.
>  # Este arquivo pode ser utilizado para popular bancos de dados.
>  #to_json($allInfoByType)
>  open(JSONFILE, ">$outputDir/database.json");
>  eval
>  {
>   print JSONFILE lenght($allInfoByType);
>  };
>  close(JSONFILE);
> }
>
>
> Alguns dados:
> Perl versão 5.8.8
>
> Pacotes instalados:
> waltercoan em ldubuntuserver:~$ dpkg --get-selections | grep -i json
> libjson-any-perl    install
> libjson-perl     install
>
> waltercoan em ldubuntuserver:~$ dpkg --get-selections | grep -i perl
> libalgorithm-c3-perl    install
> libappconfig-perl    install
> libarchive-tar-perl    install
> libbit-vector-perl    install
> libcache-cache-perl    install
> libcache-fastmmap-perl    install
> libcarp-assert-more-perl   install
> libcarp-assert-perl    install
> libcarp-clan-perl    install
> libcatalyst-modules-perl   install
> libcatalyst-perl    install
> libcatalyst-view-tt-perl   install
> libcgi-formbuilder-perl    install
> libcgi-simple-perl    install
> libclass-accessor-chained-perl   install
> libclass-accessor-grouped-perl   install
> libclass-accessor-perl    install
> libclass-c3-componentised-perl   install
> libclass-c3-perl    install
> libclass-data-accessor-perl   install
> libclass-data-inheritable-perl   install
> libclass-inspector-perl    install
> libclass-mop-perl    install
> libclass-throwable-perl    install
> libclass-trigger-perl    install
> libcompress-raw-zlib-perl   install
> libcompress-zlib-perl    install
> libconfig-any-perl    install
> libdata-dump-perl    install
> libdata-optlist-perl    install
> libdata-page-perl    install
> libdata-visitor-perl    install
> libdate-calc-perl    install
> libdbd-mysql-perl    install
> libdbi-perl     install
> libdbix-class-perl    install
> libdbix-class-schema-loader-perl  install
> libdbix-contextualfetch-perl   install
> libdeps-perl     install
> libdeps-renderer-dot-perl   install
> libdevel-stacktrace-perl   install
> libdigest-hmac-perl    install
> libdigest-sha1-perl    install
> libemail-valid-perl    install
> liberror-perl     install
> libexporter-lite-perl    install
> libextutils-autoinstall-perl   install
> libextutils-cbuilder-perl   install
> libextutils-parsexs-perl   install
> libfile-copy-recursive-perl   install
> libfile-modified-perl    install
> libfile-slurp-perl    install
> libgd-gd2-noxpm-perl    install
> libgd-graph-perl    install
> libgd-text-perl     install
> libgraphviz-perl    install
> libhtml-parser-perl    install
> libhtml-prototype-perl    install
> libhtml-scrubber-perl    install
> libhtml-tagset-perl    install
> libhtml-template-perl    install
> libhtml-tree-perl    install
> libhtml-widget-perl    install
> libhttp-body-perl    install
> libhttp-request-ascgi-perl   install
> libhttp-server-simple-perl   install
> libio-compress-base-perl   install
> libio-compress-zlib-perl   install
> libio-multiplex-perl    install
> libio-pty-perl     install
> libio-stringy-perl    install
> libio-zlib-perl     install
> libipc-run-perl     install
> libipc-sharelite-perl    install
> libjson-any-perl    install
> libjson-perl     install
> liblingua-en-inflect-number-perl  install
> liblingua-en-inflect-perl   install
> liblocale-gettext-perl    install
> liblocale-maketext-lexicon-perl   install
> liblocale-maketext-simple-perl   install
> liblog-log4perl-perl    install
> libmailtools-perl    install
> libmime-types-perl    install
> libmodule-build-perl    install
> libmodule-find-perl    install
> libmodule-install-perl    install
> libmodule-pluggable-fast-perl   install
> libmodule-pluggable-perl   install
> libmodule-scandeps-perl    install
> libmoose-perl     install
> libmro-compat-perl    install
> libnet-cidr-perl    install
> libnet-daemon-perl    install
> libnet-dbus-perl    install
> libnet-dns-perl     install
> libnet-domain-tld-perl    install
> libnet-ip-perl     install
> libnet-server-perl    install
> libobject-signature-perl   install
> libossp-uuid-perl    install
> libpar-dist-perl    install
> libparams-util-perl    install
> libparams-validate-perl    install
> libparse-recdescent-perl   install
> libpath-class-perl    install
> libplrpc-perl     install
> librpc-xml-perl     install
> librrds-perl     install
> libscope-guard-perl    install
> libset-object-perl    install
> libsql-abstract-limit-perl   install
> libsql-abstract-perl    install
> libsub-exporter-perl    install
> libsub-install-perl    install
> libsub-name-perl    install
> libsub-uplevel-perl    install
> libtemplate-perl    install
> libtemplate-plugin-class-perl   install
> libtemplate-timer-perl    install
> libterm-readkey-perl    install
> libtest-exception-perl    install
> libtest-longstring-perl    install
> libtest-mockobject-perl    install
> libtest-use-ok-perl    install
> libtest-www-mechanize-perl   install
> libtext-charwidth-perl    install
> libtext-iconv-perl    install
> libtext-simpletable-perl   install
> libtext-wrapi18n-perl    install
> libtie-ixhash-perl    install
> libtimedate-perl    install
> libtree-simple-perl    install
> libtree-simple-visitorfactory-perl  install
> libuniversal-can-perl    install
> libuniversal-exports-perl   install
> libuniversal-isa-perl    install
> libuniversal-require-perl   install
> liburi-perl     install
> libversion-perl     install
> libwww-mechanize-perl    install
> libwww-perl     install
> libxml-parser-perl    install
> libxml-twig-perl    install
> libxml-writer-perl    install
> libyaml-perl     install
> perl      install
> perl-base     install
> perl-modules     install
>
>
> Obrigado,
>
> Walter Coan
> w.coan em terra.com.br
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>


More information about the SaoPaulo-pm mailing list